2010-07-01から1ヶ月間の記事一覧

Module#freezeの謎

これは読んでも役に立たない記事です。

「サブクラス化するのは、スーパークラスの実装をよく知っているときに限るべきだ」

Rubyでは、サブクラスで親クラスのprivateメソッドやインスタンス変数を上書きしてしまい、見付けづらいバグを出すことがあります。このことについて、オライリーの『プログラミング言語Ruby』P248では、次のように述べています(P250も参照)。 Rubyでサブ…

Rubyのクラスとモジュールは同じもの

Rubyを覚えるときは、「Rubyにはクラスとモジュールというものがある」と考えるより、「Rubyのクラスとモジュールは(ほとんど)同じもの」と考えるほうが分かりやすいんじゃないかなあ、という気がしてきました。クラスとモジュールの違いは、次の5つくらい…

class_eval (module_eval)でのクラス変数とクラス定数

クラス定義の外側で、class_evalのブロックを使ってクラス変数とクラス定数にアクセスしようとすると、Ruby 1.8ではNameErrorが発生します。class_execでも同様です。コードをブロックではなく文字列で渡したときはアクセスできます。Ruby 1.9.1ではブロック…