ruby - 2..-1 的范围是什么意思? (Ruby koans about_arrays.rb)

标签 ruby

请有人解释一下 2..-1 的范围对象是什么意思。

Ruby koans 在 about_arrays.rb 中有以下内容:

def test_slicing_with_ranges
  array = [:peanut, :butter, :and, :jelly]

  assert_equal [:peanut, :butter, :and], array[0..2]
  assert_equal [:peanut, :butter], array[0...2]
  assert_equal [:and, :jelly], array[2..-1]
end

以下网站(从另一个答案中找到)解释了范围如何与切片一起使用: Gary Wright, string/array slices 由此,我理解了为什么拆分给出了答案。我不明白的是范围对象指的是什么范围。对于正常范围,我可以这样做:

(1..3).each { |x| puts(x) }

在 irb 中执行时给出以下输出:

1
2
3
=> 1..3e

但是,(2..-1).each { |x| puts(x) 给出:

=> 2..-1

那么范围 (2..-1) 是什么意思?

最佳答案

负索引表示“从数组末尾开始计数”。所以 -1 是数组中的最后一项。 2..-1 表示从第三项到最后一项。

关于ruby - 2..-1 的范围是什么意思? (Ruby koans about_arrays.rb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12098956/

相关文章:

ruby - Rails:ParameterFilter::compiled_filter 尝试复制符号

javascript - Rails : POST 422 (Unprocessable Entity) in Rails? 由于路线或 Controller ?

ruby-on-rails - Devise_token_auth 和 Devise 使用用户名和电子邮件登录

ruby - 如何在内存中创建一个git仓库?

arrays - 如何根据相邻元素的条件将数组拆分为有限数量的分区

html - 单选按钮不显示数据库信息,并且在选择另一个单选按钮时也不会禁用

python - 为什么我的 yaml 没有被正确解析?

ruby-on-rails - 如何在 sidekiq 中切换 Redis 主机/池?

ruby - Selenium file_detector 找不到要上传到 selenium 网格的文件

ruby - 尽管 RVM 插件 Jenkins 使用了错误的 ruby​​ 版本