From 55c1942b43b1e62956e6ce1798dc10fe742d617c Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 17 Mar 2014 00:04:34 +0900 Subject: add Enumerable#first to mruby-enum-ext --- mrbgems/mruby-enum-ext/mrblib/enum.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb index f250d39f1..85779ee59 100644 --- a/mrbgems/mruby-enum-ext/mrblib/enum.rb +++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb @@ -161,4 +161,30 @@ module Enumerable h end + NONE = Object.new + ## + # call-seq: + # enum.first -> obj or nil + # enum.first(n) -> an_array + # + # Returns the first element, or the first +n+ elements, of the enumerable. + # If the enumerable is empty, the first form returns nil, and the + # second form returns an empty array. + def first(n=NONE) + if n == NONE + self.each do |e| + return e + end + return nil + else + a = [] + i = 0 + self.each do |e| + break if n<=i + a.push e + i += 1 + end + a + end + end end -- cgit v1.2.3