簡體   English   中英

了解方法與Scala中的功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM