有没有办法将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
。
有没有办法存档我需要的东西?
答案 0 :(得分:2)
您需要明确折叠您的类型:list.foldLeft(null: String)(cc)
或list.foldLeft[String](null)(cc)
。问题是1)null
被推断为具有类型Null
(除非上下文需要另一种类型); 2)类型推断从左到右工作,因此在看到foldLeft(null: Null)
后foldLeft
的类型参数固定为Null
而cc
必须具有{{1}类型它没有。