【发布时间】:2016-11-03 22:51:37
【问题描述】:
我对 scala 函数相对较新,我对这种语法糖的实际工作方式以及何时使用特定类型感到困惑。
我已经编写了 3 个函数,它们都应该做同样的事情,但是我无法理解为什么 Function0 的行为不同
版本 1
val fn1 : (String) => String = System.getProperty(_)
println(fn1("os.name"));
第 2 版
val fn2 : () => String = System.getProperty("os.name")
println(fn2());
版本 2 给出类型不匹配;发现:需要字符串:() ⇒ 字符串
第 3 版
val fn3 = () => System.getProperty("os.name")
println(fn3());
我知道对于版本 2,scala 已经知道 System.getProperty 的返回类型,但是为什么它会产生那个特定的错误,为什么它会阻止我明确说明返回类型。我个人更喜欢显式返回类型,因此我不必深入研究方法来查看它返回的内容。
【问题讨论】: