Commit e63c1e1d authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1655 from pbosetti/master

Added rewrite of Array#[] to mruby-array-ext gem
parents 3fff0e20 921e6e24
...@@ -201,4 +201,36 @@ class Array ...@@ -201,4 +201,36 @@ class Array
self.replace(result) self.replace(result)
end end
end end
##
# call-seq:
# ary[rng] -> ary slice
#
# Remeturns a slice of +ary+ according to the Range instance +rng+.
#
# a = [ "a", "b", "c", "d", "e" ]
# a[1] => "b"
# a[1,2] => ["b", "c"]
# a[1..-2] => ["b", "c", "d"]
#
def [](idx, len=nil)
case idx
when Range
if idx.last < 0 then
len = self.length - idx.first + idx.last + 1
else
len = idx.last - idx.first + 1
end
return self.slice(idx.first, len)
when Numeric
if len then
return self.slice(idx.to_i, len.to_i)
else
return self.slice(idx.to_i)
end
else
self.slice(idx)
end
end
end end
...@@ -107,3 +107,10 @@ assert("Array#compact!") do ...@@ -107,3 +107,10 @@ assert("Array#compact!") do
a.compact! a.compact!
a == [1, "2", :t, false] a == [1, "2", :t, false]
end end
assert("Array#[]") do
a = [ "a", "b", "c", "d", "e" ]
a[1.1] == "b" and
a[1,2] == ["b", "c"] and
a[1..-2] == ["b", "c", "d"]
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment