Ruby入門です。Rubyも参照のこと。
たのしいRuby 第5版を参考にしています。
基本は加減乗除。+, -, *, /, %などが使えるほかMathモジュールで数学関数を使える。
ローカル変数はvalue、グローバル変数は$value、インスタンス変数は@value、クラス変数は@@value。
リストやハッシュもある。
ifなどの制御ブロックや関数の終了はend。
for文ではJavaの拡張for文のような記法(反復可能オブジェクトを1つ1つ操作する)も可能。
メソッドの定義はdef。
returnは省略した場合最後の値を返す。
クラスの定義はclass。
classの中にdefでメソッドを作り、@valueでインスタンス変数を操作する。
インスタンスの作成はnewメソッド。
メソッドはレシーバ名.メソッド名()というように「.」をつけて呼び出す(ブロックを付加することも可能)。
継承は「<」を使う。演算子オーバーロードが使えるため配列の[]を再定義することもできる。また特異メソッドを使ってインスタンスに直接メソッドを追加するなどの荒業も可能。
ブロックはdo |x| 〜 endや波括弧も使える。
ブロックは無名関数だが、ブロックがあるだけでRubyは極めて直観的で使いやすい。
モジュールはクラスと似ているが、特定のメソッドをインクルードして使い回せる。
これらのモジュールは、eachや<=>など最低限のメソッドを必要とし、最低限のメソッドだけ定義すれば、自分のクラスでもインクルードできる。
eachだけを実装してEnumerableモジュールをインクルードすれば、mapやfindも使えて便利。
Arrayクラスのメソッドに見えて、実際はEnumerableモジュールのメソッドという場合も多い。
ダックタイピング(アヒルのように鳴き、アヒルのように歩くものは、アヒルに違いない)との相性も良い。
Rubyにはさまざまなライブラリが用意されている。
特にArray, Hash, File, Dir, IO, String, Regexp, Procなどは不可欠。