まとめ

ほとんどメモ。

  • 1章:ようこそRubyのある生活へ
  • 2章:配列とハッシュ
    • 配列
      • 添字参照
        • 負の添字
          • a[-1]
        • 長さつき添字
          • a[n,len]
        • 範囲添字
          • a[0..1]
      • 添字代入
        • 参照とは別メソッド
    • ハッシュ
      • メソッド呼び出しの最後の引数としてハッシュリテラルを渡すとき、ブレースは省略可能
        • method :rin => 'clara', :kayo => 'pauline'
        • 擬似キーワード引数
    • Enumerableモジュール
      • eachメソッドから導出可能なメソッドを集めたモジュール
      • eachを定義してinclude Enumerable すれば map他の多くのメソッドが使用できる
    • Enumerable::Enumeratorクラス
      • each以外の任意のイテレータについてEnumeratorのメソッド群を提供するプロクシ・クラス
      • obj.enum_for(:each_with_index).map { |(book,author), index| hoge }
  • 3章:数値
    • 数値リテラル
      • 区切りとして_を使用できる
        • 1_234_567
      • 2進数リテラル表記あり
        • 0b1011
    • クラス階層
      • Numeric
        • Integer
          • Fixnum
          • Bignum
        • Float
    • coerce規約による自動型変換
  • 4章:文字列
    • 式展開
      • "#{a}"
    • 文字列化メソッド
      • to_s
      • to_str
      • inspect
    • バッククォート文字列
    • パーセント記法
      • %w[abc def]
    • ヒアドキュメント
      • 区切り文字のインデント
        • <<-"EOS"
    • 正規表現
      • 鬼車
    • 部分文字列-
  • 5章:入出力
    • ランダムアクセス
      • read で全データ入力
      • read(バイト数)で入力
    • StringIO
      • 出力を文字列バッファに貯めておける
  • 6章:変数と式
    • 例外
      • begin rescue else ensure
      • 例外のキャッチ
        • rescue ArugmentError => error
        • rescure TypeError
        • rescure => aother_error
      • 例外の発生
        • raise ArgumentError, 'messasge'
        • raise ArgumetnError
        • raise 'message'
        • raise
    • 大域脱出
      • catch(:exit) - throw :exit のペア
  • 7章メソッド
    • 多値の返却
      • return 1, 2, 3
      • どのみち戻るのは配列
        • [1, 2, 3]
    • 可変長引数
      • def some_method(*arg)
    • クロージャ
      • ブロックはクロージャ
      • ブロックの中に現れる自由変数はブロックの外部環境に従う
      • 環境が保存される例
        • def create_counter; count = 1; return Proc.new do count += 1; p count end; end;
  • 8章オブジェクトとクラス
    • 特異メソッド
      • クラスでなくインスタンスに直接属しているメソッド
      • Singleton パターンの代替
      • 特異メソッドの英訳は singleton method
    • 特異クラス
      • 特定インスタンスためだけにあるクラス
        • class << (オブジェクト)
      • 特異メソッドは特異クラスのインスタンスメソッド
        • REPOSITORY = Object.new; class << REPOSITORY; def method .. end; end
        • def REPOSITORY.method; .. end
    • クラスメソッドとメタクラス
      • クラスメソッドの定義
        • def (オブジェクト).(メソッド名)
        • クラスメソッドは、Classオブジェクトの特異メソッドである
      • メタクラス
    • モジュール
      • Mix-In
    • メソッドの探索
      • (1)特異メソッド
      • (2)objが所属するクラスのインスタンスメソッド
      • (3)objが所属するクラスがincludeしたモジュールのインスタンスメソッド
      • (4)objの親クラスについて(2)から繰り返す
      • 全て見つからない場合、method_missingが呼ばれる。
  • 9章本書を越えて