为什么在以下这些情况下我得到这种类型注释的区别。 对于方案1
case class TestData(name : String , idNumber : Int)
val createRandomData : immutable.IndexedSeq[Int => TestData]= (0 to 2).map{
_ => TestData("something",_)
}
对于方案2
case class TestData(name : String , idNumber : Int)
val createRandomData: immutable.Seq[TestData] = (0 to 2).map{
i => TestData("something",i)
}
在方案1中为什么返回类型是函数而不是Seq的集合。
答案 0 :(得分:3)
因为TestData("something",i)
的类型为TestData
,而TestData("something",_)
的类型为Int => TestData
。
第二个下划线用于lambda(而第一个下划线表示该参数无关紧要)。
答案 1 :(得分:3)
当您执行以下操作时:
case class TestData(name : String , idNumber : Int)
val createRandomData : immutable.IndexedSeq[Int => TestData]= (0 to 2).map{
_ => TestData("something",_)
}
第一个下划线表示您忽略参数的值,然后在传递给map的函数主体中使用另一个下划线,因此您将创建一个以返回类型结尾的lambda函数。
在第一种情况下您想要的是:
case class TestData(name : String , idNumber : Int)
val createRandomData = (0 to 2).map{
TestData("something",_)
}
将TestData作为返回类型。