我正在學習編程範式在我的大學定義功能和閱讀由定義的函數這樣的講師提供此課程材料:高清或Val在斯卡拉
val double = (x: Int) => 2 * x
double: Int => Int = <function1>
但是從我自己的研究,我發現並習慣於像這樣定義相同的功能:
def d (x: Int) = 2 * x
d: (x: Int)Int
我是新來的斯卡拉。而且兩者的定義給出的結果是:
res21: Int = 8
一旦通過4
作爲參數。 現在我的主要問題是爲什麼講師傾向於使用val
來定義一個函數?除非使用val
給出了一些我不知道的附加優點,否則我認爲它的時間更長且沒有必要。除此之外,我知道使用val
會在程序的後面寫出一些名稱作爲佔位符,所以我可能會錯誤地編寫val double = 5
,並且該函數將消失! 在這個階段,我確信我學會了定義一個函數的更好方式,除非別人會告訴我。
我沒有資格說一些明確的關於斯卡拉,但你想真正做'VAL雙= 5'的功能被定義爲後'double'?我有這樣的印象,一旦它被定義,就不可能重新定義一個名字。無論如何,'val'和'def'在這裏都會產生相同的結果。區別僅僅在於風格。通常,用'def'定義一個函數更爲明顯,但有時用'val'定義它是有意義的。如果你不確定,我會建議你使用'def',因爲它不太可能引起任何混淆。 – kqr
是的,我做了'VAL雙= 5',鍵入'double'並得到了'res24:Scala的方法和功能的差異]的詮釋= 5' – Emanuel
可能重複(http://stackoverflow.com/questions/2529184 /差之間-方法和 - 功能合階) –