-2

我的 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>。我该如何解决这个问题?

4

2 回答 2

0

除了标准库中的 FunctionN 类型之外,Scala 2.12 类型检查器还接受函数文字作为任何单一抽象方法 (SAM) 类型的有效表达式。这改善了在 Scala 中使用为 Java 8 编写的库的体验。

scala> val runRunnable: Runnable = () => println("Run!")

runRunnable:可运行 = $$Lambda$1073/754978432@7cf283e1

scala> runRunnable.run() 运行!

于 2018-01-04T09:17:03.820 回答
0

我假设这是由于 Scala 2.12 现在 SAM 转换 Scala 函数 SAM 接口的方式。如果要查看表达式的类型,请:t在声明前添加:

scala> :t val fun2 = sum _
(Int, Int) => Int
于 2017-04-23T07:19:22.307 回答