2006-04-06から1日間の記事一覧

method_missing と instance_eval を使った Decorator

Kernel#method_missing を使ってみたいです。method_missing は、任意のクラスに対してメソッドが呼び出されたとき、対象のメソッドがそのクラスのクラス階層のどこにも実装されてなかった場合に呼び出されるメソッド、だそうです。Perl の AUTOLOAD に似て…

クラスはオブジェクトであり、クラス名は定数である

ウサギ本を読んでいたところ、先の Object#const_get の理解を助けてくれる解説を見つけました。P.292 の "クラス名は定数である" の箇所です。また、Ruby のクラスは Class オブジェクトというオブジェクトでした。したがって、クラスメソッドを呼び出すの…

Klass

"Class" ではなく "Klass" と書くのはなぜ? の答えは、id:drawnboy さんによると ローカル変数なクラスオブジェクトを指すときに ”class” は予約語なので ”klass” と書くようです。 とのことです。(昨晩、夢の中でまた別の人が同じことを言っていた気がしま…

alias を使った Adapter パターン

ruby には alias 式でメソッド、演算子、グローバル変数、正規表現後方参照の別名を作ることができるようです。Adapter パターン を Ruby っぽくするために alias を使って書き替えてみます。 #!/usr/local/bin/ruby class Banner def initialize(string) @s…

Object#const_get

クラス名からクラスを得る方法は、リファレンスマニュアルによると eval を使う方法、Object#const_get を使う方法の二通りがあるようです。 #!/usr/local/bin/ruby class Player attr_accessor :name, :age def initialize(name, age) @name = name @age = …