当my_arr [3,0]失败时,为什么数组分配my_arr [0,3]有效?

时间:2011-09-02 10:35:46

标签: ruby

我想根据索引从数组中提取两个值。

不幸的是,当最后一个索引为零时,这会失败,而我没有说明原因。

my_array = ["a", "b", "c", "d", "e", "f", "g"]

my_array[1,2]
# => ["b", "c"]

my_array[0,2]
# => ["a", "b"]

my_array[2,0]
# => []

为什么最后一次分配无法拉出元素2和0?

我怀疑我的操作实际上并没有按照我的想法行事,因为添加第三个索引会导致整个事情失败:

my_array[1,2,3]
# => ArgumentError: wrong number of arguments (3 for 1..2)

我实际上在使用数组[var1,var2]语法做什么,我该怎么办?

1 个答案:

答案 0 :(得分:4)

my_array[start,length][docs] slice 语法:

  

返回从start开始并继续使用length元素的子数组

这是my_array.slice(start, length);

的简短语法

你应该这样做:

my_array.values_at(2, 0)
=> ["c", "a"]

请参阅Array#values_atArray#slice