Enumerable
参考:
module Enumerable (Ruby 2.6.0)
Enumerator
参考:
count
参考:
instance method Enumerable#count (Ruby 2.6.0)
first
参考:
instance method Enumerable#first (Ruby 2.6.0)
map / collect
参考:
instance method Enumerable#collect (Ruby 2.6.0)
reduce / inject
参考:
Ruby の inject (reduce) メソッドを使いこなす | Hack Your Design!
reduce で with_index する方法 – Qiita
instance method Enumerable#inject (Ruby 2.6.0)
reduce (Enumerable) | Ruby リファレンス (ref.xaio.jp)
Ruby inject with index and brackets – Stack Overflow
select
参考:
instance method Enumerable#filter (Ruby 2.6.0)
reject
参考:
instance method Enumerable#reject (Ruby 2.6.0)
flat_map
map
した結果の配列を concat
する。
参考:
Enumerable#flat_map で多重配列が返ってきそうな処理もシンプルにできる | Bye Bye Moore
map して flatten したら flat_map になる、を ruby でやってみた – Qiita
ruby の flat_map って何? | rochefort’s blog
instance method Enumerable#collect_concat (Ruby 2.6.0)
min / max
参考:
instance method Enumerable#min (Ruby 2.6.0)
instance method Enumerable#max (Ruby 2.6.0)
minmax
要素の中から最小値と最大値を返す。各要素を <=>
演算子で比較して一番小さい要素 (一番先頭にくる要素) と一番大きい要素 (一番後ろにくる要素) を配列にして返す。
<=>
で比較できない要素が混じっていると例外 ArgumentError
が発生する。<=>
を実装していない要素があると例外 NoMethodError
が発生する。
numbers = [47, 57, 17, 20, 47, 41, 5, 16, 63, 34] numbers.minmax # => [5, 63]
参考:
minmax (Enumerable) | Ruby リファレンス (ref.xaio.jp)
instance method Enumerable#minmax (Ruby 2.6.0)
min_by / max_by
参考:
instance method Enumerable#min_by (Ruby 2.6.0)
instance method Enumerable#max_by (Ruby 2.6.0)
find
参考:
instance method Enumerable#detect (Ruby 2.6.0)
sum
要素の合計を計算する。ブロックを与えた場合はブロックの値を合計する。
参考:
instance method Enumerable#sum (Ruby 2.6.0)
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 が便利すぎる | 永遠に未完成
instance method Enumerable#each_with_index (Ruby 2.6.0)
instance method Enumerator#with_index (Ruby 2.6.0)
instance method Array#each (Ruby 2.6.0)
instance method Array#each_index (Ruby 2.6.0)
each_with_object
参考:
inject と each_with_object って何が違うのさ? – Qiita
Ruby の each_with_object と inject について | 茶漬けの技術メモ
Ruby でハッシュを別の形式のハッシュに変換する方法 | give IT a try
each_with_object (Enumerable) | Ruby リファレンス (ref.xaio.jp)
instance method Enumerable#each_with_object (Ruby 2.6.0)
reverse_each
参考:
配列をインデックス付きで逆順に each する – Qiita
instance method Enumerable#reverse_each (Ruby 2.6.0)
reverse_each_with_index – Stack Overflow
group_by
参考:
group_by (Enumerable) | Ruby リファレンス (ref.xaio.jp)
instance method Enumerable#group_by (Ruby 2.6.0)
instance method Object#itself (Ruby 2.6.0)
最近思いついた 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
は重複を取り除いた別のオブジェクトを返す。
参考:
instance method Enumerable#uniq (Ruby 2.6.0)
instance method Array#uniq (Ruby 2.6.0)
drop
参考:
instance method Enumerable#drop (Ruby 2.6.0)
某「ruby で cdr っぽい事したい? drop 使えば良いんじゃないですか? (鼻ホジ」ぼく「……あっ」| Bye Bye Moore
partition
参考:
partition (Enumerable) | Ruby リファレンス (ref.xaio.jp)
instance method Enumerable#partition (Ruby 2.6.0)
any? / all?
参考:
instance method Enumerable#any? (Ruby 2.6.0)
instance method Enumerable#all? (Ruby 2.6.0)
Enumerator を作成する
to_enum
enum_for
Enumerator.new
参考:
ブロックを与えない場合に Enumerator を返すメソッドを作る – Qiita
instance method Object#enum_for (Ruby 2.6.0)
singleton method Enumerator.new (Ruby 2.6.0)
Differences between [1,2,3].to_enum and [1,2,3].enum_for in Ruby – Stack Overflow
Tips
参考: