未分類 | No Comments | 8月 30th, 2007
RubyもしくはRailsで配列を扱う時のtips
Rubyのメソッド
each_with_index
eachと同じ感じなんだけど、何番目かっていう数字を一緒に取れる。ループの外で i = 0 と定義して、ループの中で i += 1 とかやらなくておk。ブロックの第一引数が配列の要素で、第二引数が配列のインデックスです。
%w(a b c d).each_with_index do |value, index| p value p index end
実行結果
"a" 0 "b" 1 "c" 2 "d" 3
all?
ブロックをとって、各要素に対して条件を指定して、全てが true だったら true を返す。
[1,2,3,4].all? do |value| value > 0 end
実行結果
trueany?
ブロックをとって、各要素に対して条件を指定して、1つでも true だったら true を返す。
[1,2,3,4].any? do |value| value == 3 end
実行結果
true-
配列から、特定の物を取り除く時に簡単に使える。例えば、配列をjoinしたいけど、nilは除いてからjoinしたい時とか。
irb(main):021:0> [1,2,nil,4,5,nil] - [nil] => [1, 2, 4, 5]
compact
配列から、nilを取り除いた配列を返す。破壊的メソッドは compact!
irb(main):021:0> [1,2,nil,4,5,nil].compact => [1, 2, 4, 5]
uniq
配列から重複したものを取り除きたい時。破壊的メソッドは uniq!
irb(main):022:0> [1,1,2,3,4,2,5].uniq => [1, 2, 3, 4, 5]
collect (map)
配列の各要素をブロックに渡し、各結果を配列にして返します。破壊的メソッドは collect! 。map と collect は同じ。
irb(main):001:0> [1,2,3,4,5].collect do |i| irb(main):002:1* i * 10 irb(main):003:1> end => [10, 20, 30, 40, 50]
index
引数の値と一致する最初の位置を返します。
irb(main):004:0> %w(a b c d e).index('c') => 2
Railsのメソッド
in_groups_of
引数に個数を取って、その個数ごとの配列を生成して、その配列を返してくれる。半端な部分はnilで埋めてくれる。table組むときとか超便利。日本語むずい。
[1,2,3,4,5,6,7].in_groups_of(3) do |group| ?> p group >> end [1, 2, 3] [4, 5, 6] [7, nil, nil] => nil
また今度追記するわ。




