mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Argument more strictly
This commit is contained in:
@@ -215,13 +215,15 @@ module Enumerable
|
||||
# Returns the first element, or the first +n+ elements, of the enumerable.
|
||||
# If the enumerable is empty, the first form returns <code>nil</code>, and the
|
||||
# second form returns an empty array.
|
||||
def first(n=NONE)
|
||||
if n == NONE
|
||||
def first(*args)
|
||||
case args.length
|
||||
when 0
|
||||
self.each do |*val|
|
||||
return val.__svalue
|
||||
end
|
||||
return nil
|
||||
else
|
||||
when 1
|
||||
n = args[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
|
||||
@@ -233,6 +235,8 @@ module Enumerable
|
||||
break if i == 0
|
||||
end
|
||||
ary
|
||||
else
|
||||
raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 0..1)"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user