为什么Scala中的类型注释更改了一个val
为什么我会在下面的场景中得到这种类型的注释差异。 对于场景1为什么Scala中的类型注释更改了一个val,scala,type-annotation,Scala,Type Annotation,为什么我会在下面的场景中得到这种类型的注释差异。 对于场景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 , idNum
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的集合。因为TestData(“something”,i)
有类型TestData
,而TestData(“something”,“something”)有类型Int=>TestData
第二个下划线用于lambda(而第一个下划线表示该参数无关紧要)
当您执行类似操作时:
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作为返回类型