2012-02-07 30 views
0

我有阵列GET数组值bucle为

numbers = [ 1, 2, 3, 4, 5, 6 ] 

我有一个变量:

number = 4 

我想和一个循环或每个块返回false除非这种情况下,数字4中存在阵列。

numbers.each do |number_bucle| 
return false unless number_bucle == number 
end 

,但我得到的错误...

LocalJumpError:25:在irb_binding”

+0

此代码是否为了在此处发布而被混淆?因为有更好的方法来确定一个数组是否包含一个值。 – 2012-02-07 19:34:26

+0

你认为你从哪里回来? – meagar 2012-02-07 19:40:19

回答

1

除非你正在做的事情在你从张贴在这里隐藏块一样,你为什么不只是做:

return false if numbers.include? number 

至于原因,你得到一个LocalJumpError有:如果你的代码是不是在一个方法然后没有任何东西可以返回(或者换句话说:没有任何东西回到)。在这种情况下,你可能想设置一个变量,而不是回报,你会想做的事:

is_included = numbers.include? number 
+0

谢谢你,它工作正常。这个回应是完美的。谢谢 – hyperrjas 2012-02-07 19:39:22

0

与尝试在`块:

numbers.include?(number) 
从(IRB)意外的返回

它应该工作。

+0

谢谢你的工作正常:D – hyperrjas 2012-02-07 19:39:05

0

正如其他人所说,你应该使用#include?检查列入。还可以看看#any?#all?,它可用于检查集合中的任何或所有元素是否与特定块匹配。