在红宝石中休息和归来,你如何使用它们?

时间:2011-01-05 07:09:23

标签: ruby return break

我刚刚问了question关于回归的事情,它似乎和休息一样。如何使用return,以及如何使用break,例如在您编写的实际代码中解决可以使用这些结构的问题。

我无法发布示例,因为我不知道如何使用它们,所以它们没有多大意义。

4 个答案:

答案 0 :(得分:71)

返回整个功能的退出。

从最里面的循环中断出口。

因此,在这样的函数中:

def testing(target, method)
  (0..100).each do |x|
    (0..100).each do |y|
     puts x*y
     if x*y == target
       break if method == "break"
       return if method == "return"
     end
    end 
  end
end

要查看差异,请尝试:

testing(50, "break")
testing(50, "return")

答案 1 :(得分:4)

从循环内部调用break。它会让你在你所在的最里面的循环之后。

从方法中调用

return。它将返回您告诉它的值,并在您调用它之后立即将其放置。

答案 2 :(得分:1)

我想编辑已批准的答案以简化示例,但我的编辑被拒绝并提出了新的答案。所以这是我的简化版本:

def testing(target, method)
  (1..3).each do |x|
    (1..3).each do |y|
     print x*y
     if x*y == target
       break if method == "break"
       return if method == "return"
     end
    end 
  end
end

我们可以看到尝试的差异:

testing(3, "break")
testing(3, "return")

仅在达到break时退出最内层循环的第一个{3语句的结果:

1232463

最后一个(return语句退出整个函数的结果):

123

答案 3 :(得分:0)

One more example could be if you have two loops in a single method and if you want to come out of the first loop and continue to the second loop use break in the first loop or vice versa:

def testing(method)
x=1
  10.times do
    if(x == 2)
     break if method == "break"
    end
   x+=1
  end
  10.times do
   if(x == 5)
     return if method == "return"
   end
  x+=1
  end 
end