Ruby - 从数组中打印一个值

时间:2015-01-30 10:56:43

标签: ruby arrays

我试图从阵列中打印一个值但由于某种原因不能。 这是我的代码:

click = rightClick(mat, sel)  #(click is a method that opens an input window. It returns an array of 5 values)
constLib << click

constNum=constLib.length
for i in 0..constNum
  puts (constLib[i][1])
end

我收到错误说:

Error: #<NoMethodError: undefined method `[]' for nil:NilClass>
(eval):37:in `block (4 levels) in initialize'
(eval):34:in `each'
(eval):34:in `block (3 levels) in initialize'
-e:1:in `call'

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

..具有包容性。这意味着,您正在访问超出范围的索引,即数组的长度。因此将其更改为...,这是独占的。

但是,这并不是rubyists如何接近它,因为他们可能会对你使用for循环感到不满。最好使用each

constLib.each {|arr| puts arr[1]}

答案 1 :(得分:0)

如果你有一个包含5个项目的数组,则数组中的第一项是项目0,最后一项是项目4.

e.g。 0,1,2,3,4

你的for循环需要从0到(constNum-1),或者需要使用“...”独占运算符而不是包含“..”。

但是,你应该考虑使用每个

来浏览数组
click = rightClick(mat, sel) 
click.each do |item| {
    puts item[0]
}

我已经改变了put来打印数组中的第一个项目。这可能是你要做的事情。这是项目[0],而不是我认为你最初写的,项目[1]。

答案 2 :(得分:0)

你应该constLib.each {|click| puts click[1]}