作者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/cn.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