-1

Python には次のような良いスライス メソッドがあります。

my_array[3:]

Rubyにもスライスメソッドがあることは知っていますが、Pythonとまったく同じことを行うメソッドはありませmy_array[3:]ん(配列のサイズがわからない場合に備えて)。そうではありませんか?

4

2 に答える 2

1

こちらのルビースライスメソッドをご覧ください。@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]               #=> []
于 2012-12-21T08:03:13.063 に答える
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 の部分文字列メソッドでした。

于 2012-12-21T08:51:19.360 に答える