2004-11-27 (Sat)
_ [言語] BooのDuck Typing
「foo as duck」と書くと型チェックが動的に行われるというのが目新しい。
[Matzにっき(2004-11-26)より引用]
というとこだけ読むと、「何だ、s.is_a?(String)みたいなもん?」と思えるが、 実際には型チェックを動的に行うというより、リフレクションを使ってメソッド 呼び出しを行って、上手く行けばOK、というもののようだ。 ちなみに、duckの部分は例ではなくって、ほんとにduckと書く。
class Person:
[getter(Name)]
_name as string
def constructor(name):
_name = name
class Car:
[getter(Name)]
_name as string
def constructor(name):
_name = name
x as duck = Person("Shugo")
print(x.Name)
x = Car("March")
print(x.Name)
ここで、x as duckの部分をx as Personに変えると、もちろんCarオブジェクトの 代入の部分で(静的な)エラーになる。 ちょっとObjective-Cに似てるかもしれない。duckはidだね。
.NETだとGroovyが使えなくて残念だと思ってたけど、こっちの方が面白そうだな:)
一番気になるのは型推論がほんとにうれしいのか、という点。Haskellだと他の部分が 自分がこれまで使って来た言語と違いすぎていてそこだけ評価できないんだけど、Boo はわりと普通っぽいのでいいかもしれない。 QDBMのインタフェイス書いてちょっと使ってみようかしら。
[ツッコミを入れる]
[TrackBack URL: http://shugo.net/jit/tb.rb/20041127]
本日のリンク元
- http://www.rubyist.net/~matz/20041126.html ×19
- http://www.banana-fish.com/~piro/20041130.html ×15
- http://www.banana-fish.com/~piro/200411.html ×14
- http://www.rubyist.net/~matz/20060502.html ×8
- http://www.banana-fish.com/~piro/ ×6
- http://www.rubyist.net/~matz/ ×5
- http://search.live.com/results.aspx?q=rubyist&mrt=... ×4
- http://www.banana-fish.com/~piro/20050801.html ×4
- http://search.live.com/results.aspx?q=rubyist ×4
- http://b.hatena.ne.jp/keyword/Objective-C ×3
- http://www.banana-fish.com/~piro/20050828.html ×3
- http://b.hatena.ne.jp/keyword/Groovy ×3
- http://search.live.com/results.aspx?q=rubyist&form... ×2
- http://mixi.jp/home.pl ×2
- http://wiki.fdiary.net/lacs/?Response ×2
- http://www.rubyist.net/~matz/20050217.html ×2
- http://www.sgtpepper.net/hyspro/diary/200410.html ×2
- http://www.banana-fish.com/~piro/20050108.html ×2
- http://www.rubyist.net/~matz/?date=20041104 ×1
- http://www.rubyist.net/~matz/20041027.html ×1
- http://www.rubyist.net/~matz/20050607.html ×1
- tDiary.Net[sunoko] ×1
- http://209.85.175.132/search?q=cache:eLgcAGGO13YJ:... ×1
- http://www.rubyist.net/~matz/20050307.html ×1
- http://www.rubyist.net/~matz/20041104.html ×1
- http://www.sgtpepper.net/hyspro/diary/20051001.htm... ×1
- http://yowaken.dip.jp/tdiary/ ×1
- http://sgtpepper.net/hyspro/diary/200410.html ×1
- http://b.hatena.ne.jp/keyword/Haskell ×1
- http://b.hatena.ne.jp/keyword/インタフェイス ×1
- http:// ×1
- http://209.85.175.104/search?q=cache:eLgcAGGO13YJ:... ×1
- http://www.rubyist.net/~matz/20041210.html ×1
- http://www.rubyist.net/~matz/20050801.html ×1
- http://b.hatena.ne.jp/search?word=mixin ×1
- http://mixi.jp/new_friend_diary.pl ×1
- http://www.tom.sfc.keio.ac.jp/~chiko/diary/?date=2... ×1
- http://www.rubyist.net/~matz/20041231.html ×1
- http://www.j96.org/~kouji/diary/?date=20040811 ×1
- http://blog.chew.jp/result/sl/sl 使って ×1
- http://www.rubyist.net/~matz/200411.html ×1
- http://search.live.com/results.aspx?q=boo 言語&src=I... ×1
- http://216.239.37.104/translate_c?hl=en&sl=ja&u=ht... ×1
- http://www.netster.com/results/results.asp?sl=0&Ke... ×1
- http://search.live.com/results.aspx?q=Boo 言語&src=I... ×1
- http://209.85.175.104/search?q=cache:eLgcAGGO13YJ:... ×1
- http://sgtpepper.net/hyspro/diary/20041003.html ×1
- http://www.rubyist.net/~matz/20050406.html ×1
