【问题标题】:Why does the Array allocation my_arr[0,3] work while my_arr[3,0] fails?为什么数组分配 my_arr[0,3] 工作而 my_arr[3,0] 失败?
【发布时间】:2011-09-02 10:35:45
【问题描述】:

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

不幸的是,当最后一个索引为零时,这会失败,我不明白为什么。

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)

我实际上在用 array[var1, var2] 语法做什么?我应该做什么?

【问题讨论】:

  • 您的意思是“当 `my_arr[3,0] 失败时?”

标签: ruby


【解决方案1】:

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

【讨论】:

  • 谢谢你 - 那是我做错了。阅读您的答案后,我重新阅读了文档,发现您仍然可以使用values_at( index1, index2, index3)
  • 我只是在更新答案以添加values_at :)
猜你喜欢
  • 2018-03-21
  • 2014-07-16
  • 2019-01-27
  • 1970-01-01
  • 2012-04-06
  • 2012-07-18
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多