実装されている抽象概念が豊富なこともRubyの魅力だ。 例えば「範囲」。我々がいろいろな所で半ば無意識に使う概念だが、Rubyでは範囲演算子を使ってこれを直接表現できる。 1..12 これは見た目通り1〜12の整数の範囲を表しているのだが(".."は両端終端を含み、"..."は両端終端を含まない範囲とすることができる)、このように記述した範囲は内部ではRangeクラスの定数に変換されていることになる。 Rangeクラスはそれ自体、メソッドを持っており範囲に対して行いたい操作メッセージを送信することができる。 irb(main):001:0> a = 1..12 => 1..12 irb(main):002:0> a.include?(5) => true irb(main):003:0> a.min => 1 irb(main):004:0> a.max => 12 irb(main):0

