知っていると便利なRubyの小技集
a-zの文字列を作成する
1
2
| ('a'..'z').to_a.join
=> "abcdefghijklmnopqrstuvwxyz"
|
特定のkeyのみ抽出する
特定のkeyのみ抽出するにはvalues_atメソッドを使います。
1
2
| h = { "cat" = "feline", "dog" = "canine", "cow" = "bovine" }
h.values_at("cow", "cat") #=> ["bovine", "feline"]
|
keyとvalueの配列からhashを作成する
1
2
3
4
| keys = ["suzuki", "itou", "yamada"]
values = [87, 76, 69]
ary = [keys, values].transpose
h = Hash[*ary.flatten]
|
特定の範囲の要素を取得する
1
2
| ["a", "b", "c", "d", "e"][0..2]
=> ["a", "b", "c"]
|
配列からnilを取り除く
1
2
| [1, 2, nil, 3, 4, nil].compact
=> [1, 2, 3, 4]
|
配列から特定の条件に一致する要素を取り除く
1
2
| [1,2,3,4,5,6].delete_if { |x| x % 2 == 0 }
=> [1, 3, 5]
|
10進数を基数変換する
1
2
3
4
5
6
| 255.to_s(2)
=> "11111111"
255.to_s(8)
=> "377"
255.to_s(16)
=> "ff"
|
逆の操作を行う場合はto_i
メソッドを使います。
1
2
3
4
5
6
| "11111111".to_i(2)
=> 255
"377".to_i(8)
=> 255
"ff".to_i(16)
=> 255
|
ハッシュのvalueでソートする
1
2
3
| scores = { 'Carol' => 90, 'Alice' => 50, 'Bob' => 60, 'David' => 40 }
scores.sort {|(k1, v1), (k2, v2)| v2 <=> v1 }
=> [["Carol", 90], ["Bob", 60], ["Alice", 50], ["David", 40]]
|
同じ値を数える
1
2
| ["a", "b", "c", "a", "b", "b"].each_with_object(Hash.new(0)) {|r, arr| arr[r]+=1 }
=> {"a"=>2, "b"=>3, "c"=>1}
|