概要
パーフェクトRubyを読んでいて便利だと思ったもの一覧です。
Enumerable編
http://qiita.com/kidachi_/items/a00558cfb0a6a3e23f4b
Hash編
http://qiita.com/kidachi_/items/651b5b5580be40ad047e
String編
http://qiita.com/kidachi_/items/7b355eb355b2d1390cf5
配列の整形
compact
配列からnilを除去。
> [false, nil, 0, '', []].compact
=> [false, 0, "", []]
uniq
配列から重複要素を排除。
> %w(Ruby Python Java Ruby Python Java).uniq
=> ["Ruby", "Python", "Java"]
flatten
多次元配列を一次元にして返却。
> arr = ["Ruby", ["Python", ["Java", "C"]]]
> arr.flatten
=> ["Ruby", "Python", "Java", "C"]
transpose
二次元配列を行列と見立てて、行と列の入れ替えを行う。
> arr = [[1, 2, 3], ["Ruby", "Python", "Java"]]
> arr.transpose
=> [[1, "Ruby"], [2, "Python"], [3, "Java"]]
zip
二つの配列を行と列を入れ替えた上で結合する。
> arr1 = [1, 2, 3]
> arr2 = ["Ruby", "Python", "Java"]
> arr1.zip(arr2)
=> [[1, "Ruby"], [2, "Python"], [3, "Java"]]
要素の連結
join
要素を連結する。
引数に文字列を与えた場合は、それをセパレータとして連結する。
> %w(Ruby Python Java).join
=> "RubyPythonJava"
> %w(Ruby Python Java).join(', ')
=> "Ruby, Python, Java"
要素の取得
sample
与えた引数だけ、ランダムに要素を取り出す。
> arr = %w(Ruby Python Java C Smalltalk Brainfuck)
=> ["Ruby", "Python", "Java", "C", "Smalltalk", "Brainfuck"]
> arr.sample
=> "Python"
> arr.sample
=> "Brainfuck"
> arr.sample
=> "C"
> arr.sample(2)
=> ["Ruby", "Smalltalk"]
> arr.sample(2)
=> ["Smalltalk", "C"]
assoc
多次元配列から、キーを指定して要素を取り出す。
> arr = [[:ruby, 1], [:python, 2], [:java, 3]]
=> [[:ruby, 1], [:python, 2], [:java, 3]]
> arr.assoc(:ruby)
=> [:ruby, 1]
要素の追加と削除
pop, push, shift, unshift
> arr = ["Ruby", "Python", "Java"]
=> ["Ruby", "Python", "Java"]
# 末尾の要素を取り出す
> arr.pop
=> "Java"
# 破壊的
> arr
=> ["Ruby", "Python"]
# 末尾に要素を追加する
> arr.push("Java")
=> ["Ruby", "Python", "Java"]
# 破壊的
> arr
=> ["Ruby", "Python", "Java"]
# 先頭の要素を取り出す
> arr.shift
=> "Ruby"
# 破壊的
> arr
=> ["Python", "Java"]
# 先頭に要素を追加する
> arr.unshift("Ruby")
=> ["Ruby", "Python", "Java"]
# 破壊的
> arr
=> ["Ruby", "Python", "Java"]
※ スタック(FirstIn, LastOut/先入れ後出し)は
pop/pushもしくはshift/unshift
※ キュー(FirstIn, FirstOut/先入れ先出し)は
pop/unshiftもしくはpush/shift