Ruby中的切片数组

cbeh67ev  于 2022-11-29  发布在  Ruby
关注(0)|答案(2)|浏览(129)

对数组进行切片时,我们可以使用

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中,有一些方法可以改变同一个数组,方法是把一个'!'符号作为- sort!,reject!等
有没有办法做到这一点?

cld4siwp

cld4siwp1#

给定

array = [1,2,3,4,5]

若要传回array=[1,2,3],您可以:

  • 切掉后半部分,所以你把前半部分还回去。
array.slice!(3..5)
  • 返回前三个元素并将其赋给变量。
array = array.first 3

或者

array = array[0..2]

...或使用其他array methods号。

jv2fixgn

jv2fixgn2#

您是指ruby文档中的slice!吗?:

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]

相关问题