Enumerable

公式サイト:

module Enumerable | Ruby リファレンスマニュアル [公式]

使い方

参考:

イーテレータ | 酒と涙とRubyとRailsと

Enumerator

参考:

class Enumerator | Ruby リファレンスマニュアル [公式]

count

参考:

Enumerable#count | Ruby リファレンスマニュアル [公式]

first

参考:

Enumerable#first | Ruby リファレンスマニュアル [公式]

map / collect

参考:

Enumerable#collect | Ruby リファレンスマニュアル [公式]

reduce / inject

参考:

inject / reduce メソッドを使いこなす | Hack Your Design!

reduce で with_index する方法 – Qiita

Enumerable#inject | Ruby リファレンスマニュアル [公式]

inject with index and brackets – Stack Overflow

select

参考:

Enumerable#filter | Ruby リファレンスマニュアル [公式]

reject

参考:

Enumerable#reject | Ruby リファレンスマニュアル [公式]

flat_map

map した結果の配列を concat する。

参考:

Enumerable#flat_map で多重配列が返ってきそうな処理もシンプルにできる | Bye Bye Moore

map して flatten したら flat_map になる、を ruby でやってみた – Qiita

ruby の flat_map って何? | rochefort’s blog

Enumerable#collect_concat | Ruby リファレンスマニュアル [公式]

min / max

参考:

Enumerable#min | Ruby リファレンスマニュアル [公式]

Enumerable#max | Ruby リファレンスマニュアル [公式]

minmax

要素の中から最小値と最大値を返す。各要素を <=> 演算子で比較して一番小さい要素 (一番先頭にくる要素) と一番大きい要素 (一番後ろにくる要素) を配列にして返す。

<=> で比較できない要素が混じっていると例外 ArgumentError が発生する。<=> を実装していない要素があると例外 NoMethodError が発生する。

numbers = [47, 57, 17, 20, 47, 41, 5, 16, 63, 34]
numbers.minmax
# => [5, 63]

参考:

Enumerable#minmax | Ruby リファレンスマニュアル [公式]

min_by / max_by

参考:

Enumerable#min_by | Ruby リファレンスマニュアル [公式]

Enumerable#max_by | Ruby リファレンスマニュアル [公式]

find

参考:

Enumerable#detect | Ruby リファレンスマニュアル [公式]

sum

要素の合計を計算する。ブロックを与えた場合はブロックの値を合計する。

参考:

Enumerable#sum | Ruby リファレンスマニュアル [公式]

each_with_index

各要素について添え字と共に繰り返し処理を行う。

%w[a b c].each_with_index do |c, i|
  puts "#{i} #{c}"
end

指定した添え字から開始する場合は with_index を使う。

%w[a b c].each.with_index(1) do |c, i|
  puts "#{i} #{c}"
end

参考:

Enumerable#each_with_index が便利すぎる | 永遠に未完成

Enumerable#each_with_index | Ruby リファレンスマニュアル [公式]

Enumerator#with_index | Ruby リファレンスマニュアル [公式]

Array#each | Ruby リファレンスマニュアル [公式]

Array#each_index | Ruby リファレンスマニュアル [公式]

each_with_object

参考:

inject と each_with_object って何が違うのさ? – Qiita

Ruby の each_with_object と inject について | 茶漬けの技術メモ

Ruby でハッシュを別の形式のハッシュに変換する方法 | give IT a try

Enumerable#each_with_object | Ruby リファレンスマニュアル [公式]

reverse_each

参考:

配列をインデックス付きで逆順に each する – Qiita

Enumerable#reverse_each | Ruby リファレンスマニュアル [公式]

reverse_each_with_index – Stack Overflow

group_by

参考:

Enumerable#group_by | Ruby リファレンスマニュアル [公式]

Object#itself | Ruby リファレンスマニュアル [公式]

最近思いついた Ruby の Object.itself の使用方法 – Qiita

Custom Ruby Method Enumerable#count_by (Use for Quick Statistics) | makandra dev

Group by identity in Ruby – Stack Overflow

uniq

Array では破壊的操作 uniq! が使える。通常の uniq は重複を取り除いた別のオブジェクトを返す。

参考:

Enumerable#uniq | Ruby リファレンスマニュアル [公式]

Array#uniq | Ruby リファレンスマニュアル [公式]

drop

参考:

Enumerable#drop | Ruby リファレンスマニュアル [公式]

某「ruby で cdr っぽい事したい? drop 使えば良いんじゃないですか? (鼻ホジ」ぼく「……あっ」| Bye Bye Moore

partition

参考:

Enumerable#partition | Ruby リファレンスマニュアル [公式]

any? / all?

参考:

Enumerable#any? | Ruby リファレンスマニュアル [公式]

Enumerable#all? | Ruby リファレンスマニュアル [公式]

Enumerator を作成する

  • to_enum
  • enum_for
  • Enumerator.new

参考:

ブロックを与えない場合に Enumerator を返すメソッドを作る – Qiita

Object#enum_for | Ruby リファレンスマニュアル [公式]

Enumerator.new | Ruby リファレンスマニュアル [公式]

Differences between [1,2,3].to_enum and [1,2,3].enum_for in Ruby – Stack Overflow

join したい

reduce+ 演算子を渡す。

["Hello", "World"].reduce(&:+)
Code language: Ruby (ruby)

または、to_a の結果を join する。

["Hello", "World"].to_a.join("_")
Code language: Ruby (ruby)

参考:

Enumerable#entries | Ruby リファレンスマニュアル [公式]

Array#join | Ruby リファレンスマニュアル [公式]

Join a ruby enumerator into a string – Stack Overflow

join enumerable to produce string – Stack Overflow

Tips

便利な組み込みクラスのメソッド達 Enumerable 編 – Qiita

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA