我正在尝试将下面的while循环缩减为单行
def this_method(week)
i = 0
while i < array.length
yield(week[i])
i += 1
end
end
week.each do |week|
puts week
end
答案 0 :(得分:3)
对于以后的行,您可以使用Array#each_index
:
array.each_index {|i| yield week[i] }
答案 1 :(得分:3)
与其他人一样,我对这个例子感到困惑(array
未定义,且this_method
从未被调用过)。但你肯定不需要while循环。我只使用Integer#times
方法,因为你没有使用数组值:
array.length.times {|i| yield week[i]}
#each_index
(ram建议)同样有效。
但如果array
实际上是week
,那么它会变得更简单:
week.each {|x| yield x}
我不确定你为什么要创建一个只回收#each
的方法。
答案 2 :(得分:0)
但是,在Ruby中,您通常使用枚举器,而不是使用枚举器。您的代码可以重写为
def this_method(week)
array.each_with_index { |item, i| yield(week[i]) }
end
我不清楚,array
变量来自何处。即使在你的例子中,也没有这种变量的定义。
答案 3 :(得分:0)
if
以任何形式检查条件仅一次
另一方面,while
可以多次检查条件。
好吧,如果您不喜欢枚举器的其他答案,您可以使用其他形式:
def this_method(week)
i = -1
yield(week[i]) while (i+=1) < array.length
end