0

对于切片数组,我们可以使用

 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 中,有一些方法可以通过放置一个 '! ' 签名为 - 排序!,拒绝!ETC

有什么方法可以做到这一点吗?

4

2 回答 2

4

给定

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

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

  • 片!关闭后半部分,所以你返回前半部分。

    array.slice!(3..5)
    
  • 返回前三个元素并将其分配给变量。

    array = array.first 3
    

    或者

    array = array[0..2]
    

...或使用许多其他数组方法

于 2013-08-08T21:58:33.180 回答
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]
于 2013-08-08T21:41:35.457 回答