Re: [比較] 簡單的 Java/Python/Ruby/Scala 比較。

看板PLT (程式語言與理論)作者 (godfat 真常)時間15年前 (2010/01/08 16:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串9/11 (看更多)
※ 引述《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://www.ptt.cc/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
文章代碼(AID): #1BHkkuhE (PLT)
討論串 (同標題文章)
文章代碼(AID): #1BHkkuhE (PLT)