自分が勝手に勉強になったと思って部分を抜き出し
変数
- 変数の値だけを比較するなら、Objectクラスのeql?とか==を使う。オブジェクトが同じかどうかを比較するなら、equalメソッドを使う
- ただし、1.0==1はtrueでも1.0.eql? 1はfalse
一般的な話
- 1行が80文字を越える場合は、改行することが推奨される
- 改行できない場合は、設計や構造自体を見なおしたほうがいいらしい
- 人に優しい字面にするために追加された特殊な構文をシンタックスシュガーといいます
クラスなど
- メソッドが複数の引数を持つ場合は、引数リストのうち右端から順にデフォルト値を指定する
newメソッドによってオブジェクトを生成すると、initializeメソッドが呼ばれる。このとき、newに渡した引数がそのまま渡される
-
モジュールとクラスの異なる点
- インスタンスを持つことができない
- 継承できない
モジュールをクラスに混ぜ合わせることを「Mix-in」という
モジュール内では使うことができても、モジュール名.メソッド名という形式で呼び出すことはできない
エラー
- rescue節は指定した例外クラスを補足すると同時にそのサブクラスも補足します
- 自分で例外クラスを定義するときは、StandardErrorクラスを継承したクラスを作成して、作成したクラスを継承するのが一般的
Numericクラス
- IntegerオブジェクトとFloatオブジェクトを計算した結果はFloatオブジェクトになります
Arrayクラス
配列の作り方
- num = [1, 2, 3, 4, 5]やstr = [“a”, ”b”, ”c”, ”d"]など
- Array.newを使う
- %w
- 要素が文字列で、空白を含まない場合
- to_aメソッド
- それぞれのオブジェクトを配列に変換する
- ハッシュに使うとキーと値のペアから配列を作るため、配列の配列になる
- splitメソッド
- 他のオブジェクトを配列に変換するもう一つの方法
- カンマや空白などで区切られた文字列から配列を作る
使い方
- a[]で取り出す
- a[2,3]をすると、2番目から3つ要素を取り出して長さが3の配列を作る
メソッド
- 「<<」とpushメソッドは同じ働き
- .concatは破壊的メソッド。元の配列を保持するには、「+」を使う
その他
- 配列同士の結合
- 「+」をつかうと結合できる
- 「|」も結合だが、同じ要素があった場合にはその要素は結合しない
- 配列の初期化の注意
- Array.new(3, [0, 0, 0])だと、3つの配列の要素すべてが同じ[0, 0, 0]を参照してしまう
- Array.new(3){ [0, 0, 0] }のようにしないとダメ
Stringクラス
- ヒアドキュメントを使う
- 「<<-」を使うとインデントが揃う
- 日本語の文字列の長さを取得する場合、バイト数を返しているためsizeメソッドがそのまま使えない
- 正規表現で同じエンコードを指定してsplitメソッドを使う
- 「<<」とconcatメソッドは同じ働き
- 文字列のインデックスによって返されるオブジェクトは文字コード
- 辞書順では「かけ」「がけ」「かこ」でも、Rubyでは「かけ」「かこ」「がけ」
その他
- リファレンス・マニュアルの読み方
- 一度に全部覚えようとしない(相当数あるので)
- スーパークラスのメソッドも調べる