Python中有一个很好的切片方法,如
my_array[3:]
我知道Ruby中也有切片方法,但是没有与Python的my_array[3:]
完全相同的方法(如果不知道数组的大小)。不是吗?
答案 0 :(得分:1)
请在这里查看红宝石slice methods。并且正如@Blender建议您可以传递类似的范围:
my_array[3..-1]
编辑:
array = ["a", "b", "c", "d", "e"]
array[3..-1]
将导致["d", "e"]
,d
的索引为3,e
是最后一个元素。
a = [ "a", "b", "c", "d", "e" ]
a[2] + a[0] + a[1] #=> "cab"
a[6] #=> nil
a[1, 2] #=> [ "b", "c" ]
a[1..3] #=> [ "b", "c", "d" ]
a[4..7] #=> [ "e" ]
a[6..10] #=> nil
a[-3, 3] #=> [ "c", "d", "e" ]
# special cases
a[5] #=> nil
a[5, 1] #=> []
a[5..10] #=> []
答案 1 :(得分:1)
class Array
def sub_array(pos, len = -1)
if len == -1
then # the rest of the array starting at pos
len = self.size - pos
end
self.slice(pos, len)
end
end
my_array = %w[a b c d e f]
p my_array.sub_array(3) #=> ["d", "e", "f"]
p my_array.sub_array(5) #=> ["f"]
p my_array.sub_array(9) #=> nil
p my_array.sub_array(3, 2) #=> ["d", "e"]
p my_array.sub_array(3, 9) #=> ["d", "e", "f"]
实际上这最初是String的子串方法。