函数文字与call-by-name参数

Sjl*_*ver 10 scala

如何在scala中使用call-by-name参数定义匿名函数?

我尝试了以下方法:

val fun = (x: Boolean, y: =>Int) => if(x) y else 0
Run Code Online (Sandbox Code Playgroud)

这适用于按值调用y,但不适用于按名称调用.为什么?

Dan*_*ral 19

它可以完成,但方式略有不同:与参数分开声明类型:

val fun: (Boolean, => Int) => Int = (x, y) => if (x) y else 0
Run Code Online (Sandbox Code Playgroud)