我正在努力用by-name参数编写一个匿名函数.这就是我累了.
val fun = (x: Boolean, y: =>Int) => if(x) y else 0
Run Code Online (Sandbox Code Playgroud)
这失败并出现以下错误.
Error:(106, 31) identifier expected but '=>' found.
val fun = (x: Boolean, y: =>Int) => if(x) y else 0
^
Error:(109, 3) ')' expected but '}' found.
}
^
Run Code Online (Sandbox Code Playgroud)
与标准函数相同的代码是如何工作的.
def fun1(x: Boolean, y: =>Int) = if(x) y else 0
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
- - - - - - - -编辑 - - - - - - - - -
我有两个问题.senia的答案解决了最初的案例.假设我有一个函数需要一个函数.
def xxx[A,B](f:(A,=>B)=>B)={}
Run Code Online (Sandbox Code Playgroud)
根据senia解决方案,它的工作原理.
val fun: (Int, =>Boolean) …Run Code Online (Sandbox Code Playgroud) 在 Scala 中,我们可以有:
println {“你好,世界!” }
从“Scala 编程”一书中:
这种用大括号代替括号来传递一个参数的功能的目的是使客户端程序员能够在大括号之间编写函数文字。这可以使方法调用感觉更像是控制抽象。
这个声明是什么意思?
scala ×2