上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Rubyは「全てがオブジェクト」

Wikipediaにこう書かれてあります。

構文は、ALGOL系を継承しながら、可読性を重視している。Rubyにおいては整数や文字列なども含めデータ型はすべてがオブジェクトであり、純粋なオブジェクト指向言語といえる。
http://ja.wikipedia.org/wiki/Ruby


例えば、1という数値はFixnumクラスのオブジェクトになります。
どのクラスのオブジェクトなのかを調べたい時には、以下のように記述します。

1.class #=> Fixnum


クラスに属したオブジェクトということはメソッドを持っているわけで、
+、-、*、/もメソッドになるので、こんな書き方もできてしまいます。

1 + 1 → 1.+(1) 1 #=> 2
1 - 1 → 1.-(1) #=> 0
1 * 1 → 1.*(1) #=> 1
1 / 1 → 1./(1) #=> 1


Fixnumクラスのオブジェクト「1」がどんなメソッドを持っているかを見てみます。

1.methods
# ["%", "odd?", "inspect", "prec_i", "<<", "tap", "div", "&", "clone", ">>", "rpower", "public_methods", "object_id", "__send__", "instance_variable_defined?", "equal?", "freeze", "to_sym", "*", "ord", "+", "extend", "next", "send", "round", "methods", "to_yaml", "prec_f", "-", "even?", "singleton_method_added", "divmod", "hash", "to_yaml_properties", "/", "integer?", "downto", "dup", "to_enum", "instance_variables", "|", "eql?", "size", "id", "instance_eval", "truncate", "~", "lcm", "to_i", "singleton_methods", "power!", "modulo", "taint", "zero?", "times", "instance_variable_get", "frozen?", "enum_for", "display", "instance_of?", "^", "denominator", "method", "to_a", "+@", "-@", "quo", "instance_exec", "type", "**", "upto", "gcdlcm", "to_f", "<", "step", "protected_methods", "<=>", "between?", "==", "gcd", "remainder", ">", "===", "taguri", "to_int", "nonzero?", "pred", "instance_variable_set", "coerce", "respond_to?", "kind_of?", "floor", "succ", ">=", "taguri=", "prec", "to_s", "<=", "to_r", "fdiv", "class", "rdiv", "private_methods", "=~", "tainted?", "__id__", "abs", "untaint", "nil?", "chr", "to_yaml_style", "id2name", "is_a?", "ceil", "[]", "numerator"]
※Ruby ver1.8.7の結果です。


ずら〜っと表示されました。
+や-をメソッド定義する場合は、@を付けるようですね。
こんな風にどのクラスがどんなメソッドを持っているのかをいつでも調べられるのは便利です。
関連記事

コメントの投稿

非公開コメント

プロフィール

星羽(榎田)

Author:星羽(榎田)
PHPエンジニアがRuby、PHPなどをいじった時の備忘録

最新記事
最新コメント
最新トラックバック
カテゴリ
スポンサードリンク
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。