プログラミングRuby第2版言語編第2章
Rubyはオブジェクト指向です^^
値なども、それに対応するクラスのメソッドを呼べちゃう
irb(main):001:0> "mageres".size => 7 irb(main):002:0> -2501.abs => 2501
値もオブジェクトってことでいいですか川平さん!
http://www.rubyist.net/~matz/20030729.html
- 「値」はすべて「オブジェクト」と呼ぶ
- 「オブジェクト」の「メソッド」を呼べる。「オブジェクト」は「メソッド」が呼ばれると自分に合わせた処理を行う。
- 「オブジェクト」は「クラス」に所属する。
- 「オブジェクト」が持つ「メソッド」は(原則的に)その所属する「クラス」で決まる。
い い ん で す
メッセージ・メソッド・レシーバ
method = あるクラスのオブジェクトがどのように振る舞うかをクラスに記述したもの
http://sound.jp/supako/x/ooponsc.html
message = メソッドをオブジェクトの外側から呼び出すためのメッセージ
receiver = メッセージを受け取るオブジェクトのこと
文字列リテラル
シングルとダブル
- シングルクオーテーションを使った場合
- 特にどうということはない、そのまま解釈
- ダブルクオーテーションを使った場合
- バックスラッシュで始まる置換シークエンス云々
- 要するに改行なら「\n」を解釈する
irb(main):003:0> puts "絶対に\n許さないよ!" 絶対に 許さないよ! irb(main):004:0> puts '絶対に\n許さないよ!!' 絶対に\n許さないよ!!
-
- 式の展開なども行う #{変数}
irb(main):005:0> justice = "正義" irb(main):006:0> puts "それが俺の#{justice}" それが俺の正義
いろいろしたけりゃダブルクオーテーション使えと。
文修飾子
if 文や while 文の中が1行なら文修飾子が使える
irb(main):001:0> yuuko = "isako" irb(main):002:0> puts yuuko.crypt("4423") if yuuko != "yasako" 44lHH1gPKNKa2
これは良いな。
コードブロック
「これは非常に面白く重要な機能」らしい
2種類のデリミタがある、がデリミタってなんぞ。
「delimiter」は「区切り文字」の意味です。
http://www.intel.co.jp/jp/business/glossary/5783614.htm
ブレース(中かっこ)か do...end で囲む。使い分けとしては特に決められてはいないが、中身が1行であればブレース、複数行なら do...end、とするのが Ruby での習慣らしい。
手順
- メソッドの呼び出しにブロックを関連づける
- メソッド内で yield 文を実行すると、関連づけられたブロックが実行される