我的scala repl并未在某些书籍和论坛似乎建议的那样显示屏幕上的日志。我在Scala 2.12.1上。当我尝试以下语法
时,我的scala替补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>
等的特征等。如何解决此问题?
我假设这是由于scala 2.12现在转换scala函数的方式。如果您想查看表达式的类型,请将:t
预定到声明:
scala> :t val fun2 = sum _
(Int, Int) => Int
Scala 2.12类型检查器除了来自标准库中的functionn类型外,还接受函数字面作为任何单个抽象方法(SAM(类型的有效表达式。这可以改善使用Scala中为Java 8编写的库的经验。
scala> val runRunnable: Runnable = () => println("Run!")
runrunnable:runnable = $$ lambda $ 1073/754978432@7cf283e1
scala> runrunnable.run((运行!