[英]Understanding methods Vs functions in scala
我正在學習方法和函數之間的區別。 我正在追蹤這個連結
http://jim-mcbeath.blogspot.co.uk/2009/05/scala-functions-vs-methods.html
文章說如果您編譯以下代碼:
class test {
def m1(x:Int) = x+3
val f1 = (x:Int) => x+3
}
我們應該得到兩個文件1. test.class 2. test $$ anonfun $ 1.class
但是我不明白。 其次,該示例說明如果在REPL中執行以下命令,則將獲得以下內容
scala> val f1 = (x:Int) => x+3
f1: (Int) => Int = <function>
但是我只有這個
scala> val f1 = (x:Int) => x+3
f1: Int => Int = $$Lambda$1549/1290654769@6d5254f3
是因為我們使用的是其他版本嗎? 請幫忙。
Scala 2.11和更早版本的行為如博客文章中所示。
該行為在Scala 2.12中更改。 Scala現在使用添加到JVM版本8中的lambda支持,因此不需要發出額外的.class
文件。 結果,由2.12生成的.jar
文件通常要小得多。
這樣做的副作用是,Scala無法再覆蓋toString
,因此您會看到lambda的標准JVM toString
輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.