2017-04-23 65 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() 運行!