爲什麼我們不在Scala中寫入方法參數名稱之前的var或val?爲什麼我們不寫var或val在scala中的方法參數名稱之前?
例如,函數定義:
def printname(name: String) = println(name)
爲什麼我們不在Scala中寫入方法參數名稱之前的var或val?爲什麼我們不寫var或val在scala中的方法參數名稱之前?
例如,函數定義:
def printname(name: String) = println(name)
因爲他們是val
秒,僅此而已。所以不需要指定它。
謝謝。實際上,如果你在方法/函數的參數標識符之前放置了var或val,scala會投訴;它要求參數應該隱式地爲val。 (當然這種情況是主要的構造函數的參數不同) – foghorn
這是一個不令人滿意的答案,因爲在Java中你會得到默認爲可變本地(和Scala迎合Java的,他們說當地mutables都OK)。事實上,Scala函數params可以像ctor params一樣工作,尤其是因爲他們試圖使cntors與defs保持一致,除非ctors總是有一個param列表,所以你會說'f(var i)'以防萬一你想要分配給它。 Ctors已經在抱怨像x(var i:=> Int')這樣的異常,問題是爲什麼,而不是「如果我......會發生什麼?」 –
@ som-snytt主構造參數可以是'val's或'var不是局部變量(這將是唯一可能的函數參數),這只是避免類似Foo(_bar:Int){var bar:Int = _bar}''重複的快捷方式。 –
提供給編譯器的附加信息是什麼?編譯器已經知道它們是參數。 –
因爲這不是必需的嗎? –