我的scala repl没有在屏幕上显示日志,因为有些书籍和论坛似乎在暗示。我在scala 2.12.1上。当我尝试下面的语法时,我的scala repl
scala> def sum(a:Int, b:Int) = a+ b
sum: (a: Int, b: Int)Int
应显示如下
scala> val fun2 = sum _
fun2: (Int, Int) => Int = <function2>
但它显示如下:
scala> val fun2 = sum _
fun2: (Int, Int) => Int = $$Lambda$1623/2005055216@13bdf19
它没有显示<function2>
等特征。如何解决此问题?
答案 0 :(得分:0)
我假设这是由于Scala 2.12现在SAM转换Scala功能SAM接口的方式。如果要查看表达式的类型,请在声明前添加:t
:
scala> :t val fun2 = sum _
(Int, Int) => Int
答案 1 :(得分:0)
除了标准库中的FunctionN类型之外,Scala 2.12类型检查器还接受函数文字作为任何单一抽象方法(SAM)类型的有效表达式。这改善了在Scala中使用为Java 8编写的库的体验。
scala> val runRunnable: Runnable = () => println("Run!")
runRunnable:Runnable = $$ Lambda $ 1073/754978432 @ 7cf283e1
阶&GT; runRunnable.run() 运行!