■1つの配列を複数の引数として展開する
a = []
b = [2,3]
a.push(1) →[1]
a.push(b) →[1,[2,3]]
[1,2,3]にしたい場合には
a.push(*b) →[1,2,3] splat展開

■%記法で文字列の配列を簡潔に作る
%wで文字列の配列を作成する
%w! apple melon orange! → ["apple","melon","orange"]
%w(apple melon orange) → 上記同様


■メソッド
クラスメソッド:クラスに対して実行する
インスタンスメソッド:クラスから作成したオブジェクトに対して実行する

引数を渡すことで引数で指定した数値から開始することができる

with_index 添え字を取得する 繰り返しメソッド
fruits.map.with_index{fruit, i| "#{i}: #{fruit}"}

■繰り返し処理
Integerクラス timesメソッド,upto,downtoメソッド
5times.{} 5回繰り返す
10.upto(14) 10~14まで繰り返す
14.downto(10) 14~10まで繰り返す

Rubyではthrow,catchは例外処理ではなく
繰り返し処理を脱出するものとして用いる

■ハッシュ
同じ値を与えれば同じ値を返すような関数。
ハッシュ関数が返す値「ハッシュ値

配列と異なるのは、配列がインデックスを使って要素を区別しているが
ハッシュではキーと呼ばれるものを使用する。

よく使うメソッド
keys →ハッシュキーを配列として返す
values →ハッシュの値を配列として返す
has_key?/key?/include?/member? ハッシュの中に指定されたキーが存在するかどうか確認する

メソッドでは()を省略することができるが、
第一引数にハッシュの{}がくる場合には()を省略することができない

ハッシュリテラルがブロックと判断されてしまうため


■シンボル
'文字列'     :シンボル
文字列とは異なり、シンボルは整数
シンボルはイミュータブルなオブジェクトであり、破壊不可能
文字列はミュータブル、破壊可能

整数のため高速に値を比較できる、メモリの使用効率が良い

ハッシュのキーなどに用いることに向いている。

・%記法でシンボルやシンボルの配列を作成する
%s!ruby is fun! →:"ruby is fun"
%s(ruby is fun) →:"ruby is fun"

■よく使うイディオム
条件分岐内で直接変数に代入してしまう。
Rubyは変数への代入自体が戻り値を持つため文を分ける必要がない

limit ||=10
nil,falseの場合10を代入する

!!true →true
!!5    →true
!!false→false
!!nil  →false