Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Scala中的类型注释更改了一个val_Scala_Type Annotation - Fatal编程技术网

为什么Scala中的类型注释更改了一个val

为什么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

为什么我会在下面的场景中得到这种类型的注释差异。 对于场景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的集合。

因为
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作为返回类型