【发布时间】:2018-01-11 23:13:59
【问题描述】:
这段代码应该将单词'hello' 的索引添加到indices 数组中,但它没有将它们添加到数组中:
words = %w(hello how are you then okay then hello how)
def global(arg1, arg2)
indices = []
arg1.each do |x, y|
indices << y if arg2 == x
end
indices
end
global(words,'hello')
#=> [nil, nil]
我的代码有什么问题?
【问题讨论】:
-
if arg1 == x- 一个数组永远不会等于它的一个元素,所以这个条件永远不会成立。这就是为什么你没有索引。你的意思是if arg2 == x? -
如果您的参数有更好、更具描述性的名称,就不会发生此错误。
-
另外,
each_with_index而不是each。 -
根据 Sergio 的评论:
each只能访问值,而不是索引,因此y将始终为nil;each_with_index将为您提供值和索引(按此顺序)。
标签: ruby