作者godfat (godfat 真常)
看板PLT
標題Re: [比較] 簡單的 Java/Python/Ruby/Scala 比較。
時間Fri Jan 8 16:24:21 2010
※ 引述《brianhsu (墳墓)》之銘言:
: 在 Scala 裡,我們也是自己定義了 lat 的 getter / setter,眼尖的朋
: 友可能發現了原來成員變數的 lat 現在變成了 mLat,這是 Scala 本身的
: 限制,因為 Scala 自己就會幫我們產生一組 getter / setter。
這邊說 Scala 自己產生 getter/setter 是指?
我還沒把 Scala 看完,不過不記得有這樣的機制在。
在範例程式裡,看起來像是原本 lat 是指到一個 var,
而後來的修改則改為一個 method. 然而因為 method 的 ()
可以省略,所以對 client code 來說是長得一樣。
我猜會需要重新 compile? 沒有驗證。
: 另外,Scala 神奇的地方,就在於雖然他寫起來像 Ruby / Python 這種動
: 態型別的程式語言,可是實際上他是靜態型別的,所有的型別錯誤在編譯時
: 期就會被抓出來。
我是不覺得寫起來像動態型別的語言啦... XD
而且實際在用 generic 和 abstract type 時,
我覺得限制還滿多的,不像 C++ template 幾乎可以亂寫。
有時候得用一些有點奇妙的方式繞過去...
: 順道一提,影片中有提到 Ruby 的 Unicode 問題,但如果我記得沒錯的話,
: 目前 Ruby 應該是支援 Unicode 了。
我不知道所謂「支援」unicode 是指什麼,但 Ruby 1.8 只有 byte string,
string 本身沒有 encoding 資訊,因此就像 C 的 char* 那樣。
而 Ruby 1.9 則是每一個 string 都帶有 encoding 資訊,
可以是 UTF-8, UTF-16, Big5, Shift-JIS, 什麼都行。但內部的資料還是 byte
string, 他並不是在內部統一使用 unicode codepoint or UTF-16, etc.
不同 encoding 的 string 是不能相接的,需要明確 transcode.
例如 "shift-jis".encode('utf-8') + "utf-8"
: → brianhsu:BTW,Python 另一個我覺得很謎的地方是為什麼要傳 self 01/08 00
: → brianhsu:給 instance method。XD 01/08 00
: → sbrhsieh:為甚麼一堆 Java 新手會問在 static method 使用 this 01/08 00
: → sbrhsieh:keyword 會有錯誤? 01/08 00
我也覺得這點很討厭。記得之前寫 PHP5 class 也有類似的狀況...
不過 sbrhsieh 板友提到的這點,倒確實解決了我的疑問。
這樣說起來確實是比較清楚沒錯。但打久不會覺得煩嗎..? 畢竟,
這應該是 OO 的 common sense?
--
#!/usr/bin/env ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a
dog nailed
extra legs that
http://webptt.com/m.aspx?n=bbs/Ruby/index.html
#
walks like an octopus, and Welcome ~
Ruby@ptt~
#
talks like an octopus, then
◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as
█ http://www.ruby-doc.org/
# if it were
an octopus.
◥ ◤ http://www.rubyforge.org/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.160.129