メモ

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

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

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

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

Rubyの定数は定数ではない

Rubyの定数(大文字で始まる変数)は再代入が可能です。警告は出ますが変更できます。 FOO = "hello" FOO = "world" p FOO結果: temp.rb:2: warning: already initialized constant FOO "world"RubyにはC/C++のような定数は存在せず、大文字で始まる変数は…

Rubyの == と equal? と === と eql? のまとめ

== 数値、文字列、配列などで、「等しいかどうか」「同じ内容かどうか」を調べるのに使います。別のオブジェクト(別のインスタンスへの参照)でも同じ内容ならtrueになります。Rubyでは数値と文字列の間の自動変換は行われませんので、1 == "1"はfalseです…

シンボルをどう説明するか

入門者にRubyのシンボルを説明するのは難しいですよね。

Rubyのnewとは何か

Rubyの「クラス.new」のnewは、C++やJavaのように文法の要素ではなく、ただのメソッドです。Classクラスのインスタンスメソッドnew(Class#new)です。 new (Class)