Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Enumerable | group_by

概要

Enumerable#group_by

詳細

Enumerable#group_by 各要素をブロックで呼び出し、その結果でグループ分けを行う

サンプル

コード
# encoding: utf-8
require "pp"

class Fixnum
  def fizz?
    self % 3 == 0
  end

  def buzz?
    self % 5 == 0
  end

  def fizz_buzz?
    self % 15 == 0
  end
end

list = []
30.times {|i|list << i + 1}

p list
list = list.group_by do |e|
  if e.fizz_buzz?
    "fizzbuzz"
  elsif e.fizz?
    "fizz"
  elsif e.buzz?
    "buzz"
  else
    "other"
  end
end

p list
出力
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
{"other"=>[1, 2, 4, 7, 8, 11, 13, 14, 16, 17, 19, 22, 23, 26, 28, 29], "fizz"=>[3, 6, 9, 12, 18, 21, 24, 27], "buzz"=>[5, 10, 20, 25], "fizzbuzz"=>[15, 30]}