diff options
| author | ksss <[email protected]> | 2016-11-25 22:20:33 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2016-11-25 22:20:33 +0900 |
| commit | c28a963bf426afb00f2ebb32c0dff65dd3ff4b3f (patch) | |
| tree | 18b639720fd18f333916ce84287aa8208377e45d /mrbgems | |
| parent | 743c1e7be190eca83a08b95b0f6045cbdc9ba625 (diff) | |
| download | mruby-c28a963bf426afb00f2ebb32c0dff65dd3ff4b3f.tar.gz mruby-c28a963bf426afb00f2ebb32c0dff65dd3ff4b3f.zip | |
Like a Enumerable#take
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-enum-ext/mrblib/enum.rb | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb index 5b50aba00..54db189f4 100644 --- a/mrbgems/mruby-enum-ext/mrblib/enum.rb +++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb @@ -222,14 +222,17 @@ module Enumerable end return nil else - a = [] - i = 0 + raise TypeError, "no implicit conversion of #{n.class} into Integer" unless n.respond_to?(:to_int) + i = n.to_int + raise ArgumentError, "attempt to take negative size" if i < 0 + ary = [] + return ary if i == 0 self.each do |*val| - break if n<=i - a.push val.__svalue - i += 1 + ary << val.__svalue + i -= 1 + break if i == 0 end - a + ary end end |
