看板 PLT 關於我們 聯絡資訊
※ 引述《godfat (godfat 真常)》之銘言: : scala 定義 function/method 的寫法一堆,這邊講得似乎不太清楚。 : 用舉例的應該比講解快... 我覺得 = 就先表明有傳回值的意思,( 不然說 非Unit 感覺比較拗口 ) 雖然 Unit 學術上也算是有傳回值 ( 以函數式語言來看,都要有傳回值,所以才弄出一個 Unit ) 但是,其實 Unit 直接把它當成無傳回值,對於一般人比較能接受, 不然傳回一個不能用的值和沒傳回來意義相同。 所以情形就簡化成 : 1. 指定型別 = 有傳回值也有指定是要傳回什麼型別 2. = 有傳回值,但是讓編譯器去判斷是什麼型別 3. 都沒有 無傳回值,或說傳回 Unit 我是覺得第一個先看有沒有 = ,沒有等於的就要注意了, 不然會有明明可能希望要傳回值,結果變成 Unit。 ( 但是這在使用到傳回值時,編譯器會幫你看的 ) 至於所言可省略括號的情形,應該是如果是 property 的話, 後面再接 () 讓它可以當成 property + apply 來使用, 但是函數的話就不可以...不過這邊我覺得也有可能造成陷阱就是了。 : 其實這個 object 和 class 本身應該是沒關係的, : 只是可以用同一個名字,因此看起來會像是 java static 似的? 因為我就是拿 Java 的例子來改寫的呀.... : : 注意的是這邊 Scala 預設下 public, : : 而 object 中的 count 如果設 private 會讓 class A 也讀不到, : 因為其實是無關的東西,正好同名,才會出現這樣的狀況(吧?) 它 private 可以定 Scope 啦,定在 A 就可以讓 class A 也讀得到, 這樣作用會比較像之前的 Java 範例 :QQ : : 而這邊 Scala 就乾脆拆成兩個定義,靜態的放 object,動態的放 class, : 這樣講似乎有點怪,因為 object 應該比較像是 singleton, 這邊動態是相對於靜態啦,而靜態又是從 static 這字來的, 不然改成 類別的放 object,實例的放 class :QQ : Java 很單純,但 Scala 性質很多,語法也很多變。 : 也許可以這樣說: : 對於很熟悉 Java 的人,轉到 Scala 會比 : 對於很熟悉 C 的人,轉到 C++ 來得容易些。 : 對於不夠熟的人的話... Scala 應該會暈頭轉向 XD 一開始不要碰太多 Scala 語法,先從簡單的下手較好 :QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.29.137