Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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中,为什么可以';我不能在这里显式地使用参数类型吗?_Scala_Generics_Lambda_Functional Programming_Type Inference - Fatal编程技术网

在Scala中,为什么可以';我不能在这里显式地使用参数类型吗?

在Scala中,为什么可以';我不能在这里显式地使用参数类型吗?,scala,generics,lambda,functional-programming,type-inference,Scala,Generics,Lambda,Functional Programming,Type Inference,下面的代码运行良好 List("ios","android","wm").exists(x =>"ios ok".contains(x)) 但是,如果我像这样在匿名函数中添加参数类型,它会抱怨类型不匹配: scala> List("ios","android","wm").exists(x: String => "ios ok".contains(x)) <console>:1: error: identifier expected but string lite

下面的代码运行良好

List("ios","android","wm").exists(x =>"ios ok".contains(x))
但是,如果我像这样在匿名函数中添加参数类型,它会抱怨
类型不匹配

scala> List("ios","android","wm").exists(x: String => "ios ok".contains(x))
<console>:1: error: identifier expected but string literal found.
       List("ios","android","wm").exists(x: String => "ios ok".contains(x))
                                                      ^
有人对此有想法吗? 这些代码中是否有任何隐式类型转换?
我如何在这里明确地使用参数类型

我在想,当编译器看到
:String=>…
时,它可能希望完成一个函数类型,比如
String=>a
。这是由括号触发的,因为在花括号中通常会有一个类型化的匿名函数

这些工作:

List("ios","android","wm").exists((x: String) => x.contains(x))

List("ios","android","wm").exists { x: String => x.contains(x) }
最后一点毫无意义:

List("ios","android","wm").exists(_ =>"ios ok".contains(_))
第一个
\uu
表示您不关心元素是什么,显然情况并非如此。因此,编译器希望应用一个具有两个参数的函数,参数列表为一个

您希望这样做:

List("ios","android","wm").exists("ios ok".contains(_))

我在想,当编译器看到
:String=>…
时,它可能希望完成一个函数类型,比如
String=>a
。这是由括号触发的,因为在花括号中通常会有一个类型化的匿名函数

这些工作:

List("ios","android","wm").exists((x: String) => x.contains(x))

List("ios","android","wm").exists { x: String => x.contains(x) }
最后一点毫无意义:

List("ios","android","wm").exists(_ =>"ios ok".contains(_))
第一个
\uu
表示您不关心元素是什么,显然情况并非如此。因此,编译器希望应用一个具有两个参数的函数,参数列表为一个

您希望这样做:

List("ios","android","wm").exists("ios ok".contains(_))

如果使用
exists((x:String)=>“ios ok”.contains(x))
,则在POSIT工作中包含错误。我假设它正在尝试解析一个函数类型,例如
x:String=>SomeType
如果使用
exists((x:String)=>“ios ok”。contains(x))
,则在POSIT中包含错误。我假设它正在尝试解析函数类型,例如
x:String=>SomeType