2017-04-23 43 views
-2

我的斯卡拉重现没有显示在屏幕上的日志,因为一些书籍和论坛似乎暗示。我在斯卡拉2.12.1。我的斯卡拉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/[email protected] 

它没有显示像<function2>等特质我该如何解决?

回答

0

我假设这是由于Scala 2.12现在SAM转换Scala函数SAM接口的方式。如果你想看到一个表达式的类型,预先准备:t的声明:

scala> :t val fun2 = sum _ 
(Int, Int) => Int 
+0

但它没有显示像这样的东西,还有一切。你能说出为什么以及如何解决这个问题吗? – curiousengineer

+0

'(Int,Int)=> Int'是'Function2 [Int,Int,Int]'的语法糖。我不确定是否有办法回滚到之前的演示文稿。 –

0

斯卡拉2.12类型检查接受文字作为任何一个抽象方法(SAM),键入一个有效的表达功能,除了来自标准库的FunctionN类型。这改善了在Scala中使用为Java 8编写的库的经验。

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

runRunnable:可运行= $$ LAMBDA $754978432分之[email protected] 7cf283e1

斯卡拉> runRunnable.run() 运行!