Scala函数中的返回值不清楚

时间:2014-02-01 12:33:33

标签: scala

这是我的Scala功能:

def combine(occur: Occurrences): List[List[Word]] = {
  if (occur.isEmpty) List(List()) 
  else {
    for {
      combintaion <- combinations(occur)
      words = getWords(combintaion)
      if !words.isEmpty
      word: Word <- words
      rest <- combine(subtract(occur, combintaion))
    } yield List(word) :: rest
  }
}

我希望它返回List[List[Word]],但编译器说,表达式返回List[List[Object]]。为什么这样,我该怎么办?

2 个答案:

答案 0 :(得分:5)

你应该改变

yield List(word) :: rest

yield word :: rest

由于rest的类型为List[Word]word :: rest仍然是List[Word]的类型, 因此for(..) yield word :: restList[List[Word]]

答案 1 :(得分:0)

您将在此处返回两种类型的值。

使用

val result:List[List[Word]]=List()
return result;

Insted of

if (occur.isEmpty) List(List()) 

因为其返回类型为List[List[Nothing]]