我有以下scala函数,由于它发现Unit甚至需要它,所以它不会编译[SomethingElse]
def combine(trees: List[CodeTree]): List[CodeTree] = {
if(trees.length < 2) trees
else isortForTrees(trees.+:(new Fork(trees.head, trees.tail.head, chars(trees.head).:::(chars(trees.tail.head)), weight(trees.head) + weight(trees.tail.head))))
def isortForTrees(myList: List[CodeTree]): List[CodeTree] = {
if(myList.isEmpty) Nil
else insertForTrees(myList.head, isortForTrees(myList.tail))
}
def insertForTrees(toBeInserted: CodeTree, lisToBe: List[CodeTree]): List[CodeTree] = {
if(lisToBe.isEmpty || weight(toBeInserted) < weight(lisToBe.head)) toBeInserted :: lisToBe
else lisToBe.head :: insertForTrees(toBeInserted, lisToBe.tail)
}
}
我不明白为什么要归还单位?if语句的两端都返回List [CodeTree]。我可能犯了一个愚蠢的错误,但我根本找不到。我在这里想念什么?
方法中的最后一个表达式是返回的方法定义Unit
。随便走
if(trees.length < 2) trees
else isortForTrees(trees.+:(new Fork(trees.head, trees.tail.head, chars(trees.head).:::(chars(trees.tail.head)), weight(trees.head) + weight(trees.tail.head))))
到方法的底部,它应该可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句