Python には次のような良いスライス メソッドがあります。
my_array[3:]
Rubyにもスライスメソッドがあることは知っていますが、Pythonとまったく同じことを行うメソッドはありませmy_array[3:]
ん(配列のサイズがわからない場合に備えて)。そうではありませんか?
Python には次のような良いスライス メソッドがあります。
my_array[3:]
Rubyにもスライスメソッドがあることは知っていますが、Pythonとまったく同じことを行うメソッドはありませmy_array[3:]
ん(配列のサイズがわからない場合に備えて)。そうではありませんか?
こちらのルビースライスメソッドをご覧ください。@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] #=> []
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 の部分文字列メソッドでした。