LoginSignup
3
4

More than 5 years have passed since last update.

Yieldを使ってrubyのイテレートメソッドを実装

Posted at

find


def find(ary)
  ary.each do |x|
    return x if yield x
  end
  false
end

inject(畳み込み)


def inject(ary, int)
  ans = int
  ary.each do |val|
    ans = yield(val, ans)
  end
  ans
end

map(写像)


def map(ary)
  ans = []
  ary.each do |val|
    ans << (yield val)
  end
  ans
end

select


def select(ary)
  ans = []
  ary.each do |val|
    ans << val if yield val
  end
  ans
end

reject


def reject(ary)
  ans = []
  ary.each do |val|
    ans << val unless yield val
  end
  ans
end

count


def count(ary)
  ans = 0
  ary.each do |val|
    ans += 1 if yield val
  end
  ans
end

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4