作者Schelfaniel (Schelfaniel)
看板PLT
標題Re: [閒聊] Scala 超短介紹(續1)
時間Mon Aug 17 14:46:17 2009
※ 引述《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