Java 我有这样的方法。
public static void digPackageLines( List<PkgLine> pkgLineList, Tree treeParam ) {
if ( findPkgLineTreeExist( treeParam ) == false ) {
for ( Tree tree : findParents( treeParam ) ) {
digPackageLines( pkgLineList, tree );
}
} else {
for ( PkgLineTree pkgLineTree : findPkgLineTreeByTree( treeParam ) ) {
pkgLineList.add( pkgLineTree.pkgLineId );
}
}
}
这将包含一个清单,并通过在清单中增加kg。 现在,由于所有参数都是阀的,无法加以修改,因此不可能做到这一点。
这是我迄今为止所做的。
def digPackageLines(pkgLineList : Seq[ PkgLine ], tree_id : Long) : Unit = {
if ( PkgLineTree.findPkgLineTreeExist(tree_id) == false ) { //tree is parent if no lines found
Tree.findParents(tree_id) map {
tree =>
digPackageLines(pkgLineList, tree.tree_id.get) //dig further into tree
}
} else { //found lines
PkgLineTree.findByTreeId(tree_id) map {
pkgLineTree =>
PkgLine.findById(pkgLineTree.pkg_line_id).get //add this line to pkgLineList somehow
}
}
}
因此,我不喜欢做什么。 我正在研究尾部复习辅导,但只是基本内容,只是处理数字。 我是否需要从休养职能中恢复一份名单? 职能可以产生副作用,因此我猜测这是唯一的办法。
我的另一个主要问题是增列目标。 显然,我需要一份名单副本,然后将物体贴上该名单。 问题在于,我无法在 lo中产生新的变数。 我确信,这样做非常容易。 感谢任何帮助。
**EDIT**
最后,我已经这样做。
val pkgLineList : Seq[ (PkgLine, Tree) ] = User.findUserJoinAllAcl(10) flatMap {
user =>
PkgLine.digPackageLines(Vector[ (PkgLine, Tree) ](), user._2.tree_id)
}
这是否正确。 我已经修改了返回遗体的方法。 但只有差别。 Seems to be working good.