对于切片数组,我们可以使用
2.0.0p247 :021 > arr = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
2.0.0p247 :022 > arr.each_slice(3).to_a
=> [[1, 2, 3], [4, 5]]
2.0.0p247 :034 > arr # does not change array
=> [1, 2, 3, 4, 5]
我只想采取切片数组的第一部分,所以我按照以下方式进行了
2.0.0p247 :029 > arr = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
2.0.0p247 :030 > arr[0..2]
=> [1, 2, 3]
2.0.0p247 :031 > arr # does not change array
=> [1, 2, 3, 4, 5]
但它返回一个新的数组,我想这样做,我可以在同一个数组中取一部分数组而不创建一个新的数组 在Ruby中有一些方法可以通过放置'!'来更改相同的数组。签名 - 排序!,拒绝!等
有没有这样做的方法?
答案 0 :(得分:3)
鉴于
array = [1,2,3,4,5]
要返回array=[1,2,3]
,您可以:
切片!下半场结束,所以你回到上半场。
array.slice!(3..5)
返回前三个元素并将其分配给变量。
array = array.first 3
或者
array = array[0..2]
...或者使用其他一些array methods。
答案 1 :(得分:2)
您的意思是slice!
(http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-slice-21),如:
1.9.3p392 :001 > ar = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
1.9.3p392 :002 > ar.slice!(0,2)
=> [1, 2]
1.9.3p392 :003 > ar
=> [3, 4, 5]