cou*_*ech 23 scala anonymous-function
让我们为这个问题创建一个值:
val a = 1 :: Nil
Run Code Online (Sandbox Code Playgroud)
现在,我可以证明匿名函数可以用这样的简写形式编写:
a.map(_*2)
Run Code Online (Sandbox Code Playgroud)
是否有可能写出这个功能的简写?:
a.map((x) => x)
Run Code Online (Sandbox Code Playgroud)
我的解决方案不起作用:
a.map(_)
Run Code Online (Sandbox Code Playgroud)
Dan*_*ral 43
为了记录,a.map(_)不起作用,因为它代表x => a.map(x),而不是a.map(x => x).发生这种情况是因为单个_代替参数代表部分应用的功能.在这种情况下2*_,它代表一个匿名函数.这两种用途非常接近,很容易让他们感到困惑.
Kev*_*ght 24
您的第一个速记表也可以无点编写
a map (2*)
Run Code Online (Sandbox Code Playgroud)
感谢乘法是可交换的.
至于(x) => x,你想要这个identity功能.这在Predef中定义并且是通用的,因此您可以确定它是类型安全的.
mis*_*tor 17
您应该使用identity此用例的函数.
a.map(identity)
Run Code Online (Sandbox Code Playgroud)
identity在scala.Predef中定义为:
implicit def identity[A](x: A): A = x
Run Code Online (Sandbox Code Playgroud)