最近、rubyめっきり触ってないので、少々健忘症のようになってきています。
再度学習も含めて思い出したのをメモしておく。
配列ごにょごにょ
多重代入
普通につかえるからうれしい。
## これはいまいち
x = 1; y = 2
# こういうのが楽
x, y = 1, 2
x, y = [1, 2]
配列の値の確認
配列に値が含まれているかどうかはArray#inlcude?で。
arr = %w(harry cherry cobby darby)
arr.include?("harry") #=> true
arr.include?("habby") #=> false
配列に複数の値をチェックする場合、Array#- で。
いちいちフラグを立てたりしなくてもいい。
arr = %w(harry cherry cobby darby)
%w(harry cherry) - arr #=> []
(%w(harry cherry cob ) - arr).none? #=> true
%w(harry cherry cob ) - arr #=> ["cob"]
(%w(harry cherry) - arr).none? #=> false
条件で配列の要素を返す
arr = %w(harry cherry cobby darby bob mike)
# 条件を満たすものを返す
arr.select {|s| s.length > 3 } #=> ["harry", "cherry", "cobby", "darby", "mike"]
# 条件を満たさないもの
arr.reject {|s| s.length > 3 } #=> ["bob"]
配列の要素をパターンマッチ
# 条件を満すものを返す
arr = %w(harry cherry cobby darby bob mike)
# 一致するモノ
arr.grep("harry") #=> ["harry"]
# 正規表現で
arr.grep(/by/) # => ["cobby", "darby"]
# 数値や文字列を返す
arr.concat([10,101,1024])
arr.grep(String) #=> ["harry", "cherry", "cobby", "darby", "bob", "mike"]
arr.grep(Numeric) #=> [10, 101, 1024, 10, 101, 1024]
畳み込み
arr = [1,2,3,4,5,6,7,8,9]
# 普通のinject
arr.inject {|r, e| r += e } #=> 45
# こんな書き方あるとは知らなかった。
arr.inject(:+) #=> 45
参考
ほんと素晴らしい。
http://www.amazon.co.jp/dp/4863540221