Scala:将初始NULL传递给foldLeft

时间:2014-10-27 07:57:12

标签: scala scala-collections

有没有办法将null传递给Scala' foldLeft并仍然可以获得其他结果值?

示例:

def cc (str0: String, str1: String): String = {
  if (str0 == null) {
    return str1
  } else {
    return str0 + "/" + str1
  }
}

val list = List("1.txt", "2.txt", "3.txt")

list.foldLeft(null)(cc)

这是不可能的,因为在这种情况下,foldLeft的返回值为null

有没有办法存档我需要的东西?

1 个答案:

答案 0 :(得分:2)

您需要明确折叠您的类型:list.foldLeft(null: String)(cc)list.foldLeft[String](null)(cc)。问题是1)null被推断为具有类型Null(除非上下文需要另一种类型); 2)类型推断从左到右工作,因此在看到foldLeft(null: Null)foldLeft的类型参数固定为Nullcc必须具有{{1}类型它没有。