3

我有一个索引为 0..n 的数组,第 0 个位置为零。我的信息从位置 1 开始。遍历这个数组并从位置 1 开始的 Ruby 方式是什么。目前我正在做的事情如下:

(1...@vertices.length).each do |index|
  do something with @vertices[index]
end
4

4 回答 4

4

我正在建立化学式名称。为了避免混淆,我想在@vertices[1] 中存储一个具有 1 个碳原子的分子

使用 aHash代替:

@vertices = {
  1 => 'Molecule with 1 carbon atom',
  2 => 'Molecule with 2 carbon atoms',
  5 => 'Molecule with 5 carbon atoms'
}

@vertices.each do |carbon_atoms, molecule|
  # do something with molecule
end
于 2013-08-19T09:44:22.030 回答
2

我不确定你为什么从索引 1 开始,因为 0 是标准的,但我处理这个的方法是:

@vertices[1..-1].each { |element| do_what_you_planned_on_doing }

或者

@vertices.each_with_index do |ele, index|
  next if index == 0
  do_what_you_planned_on_doing
end

我更喜欢第一个。它似乎更优雅。

于 2013-08-19T09:41:17.083 回答
0
1.upto(array.size) {|index| array[index] }

这将使用upto方法来管理索引,然后您使用索引来访问数组的元素。

不知道为什么 nil 在 0 位置很重要,我认为它与如何从数组中的索引 1 遍历无关。事实上,没有必要提到你有一个索引从 0 到 n 的数组,因为它在 Ruby 中描述了非常数组。

于 2013-08-19T09:29:04.013 回答
0

如果你不想要第一个,一个选项是扔掉它。

@vertices.shift
@vertices[0]
# => the one you want

shift是删除第一个元素并返回它。它改变了数组本身。文档:http ://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shift

于 2013-08-19T09:46:53.800 回答