【发布时间】:2009-09-23 10:10:38
【问题描述】:
这里是 POC 代码:
object TypeTest extends Application {
val stuff = List(1,2,3,4,5)
def joined:String = stuff.reduceLeft(_ + ", " + _)
println(joined)
}
编译后报错:
tt.scala:4: error: type mismatch;
found : java.lang.String
required: Int
def joined:String = stuff.reduceLeft(_ + ", " + _)
^
tt.scala:4: error: type mismatch;
found : Int
required: String
def joined:String = stuff.reduceLeft(_ + ", " + _)
^
像
这样编写连接函数reduceLeft(_.toString + ", " + _.toString)
没有帮助,仍然给出同样的错误。但是,如果我这样写
def joined:String = stuff.map(_.toString).reduceLeft(_ + ", " + _)
一切都很好。
有人能解释一下这种奇怪的类型错误组合吗?这里到底发生了什么?第二个特别奇怪,因为有一个 Int 到 String 的隐式转换。
【问题讨论】:
标签: scala