实施例(导轨):
def blabla
@ads = ["1", "2"] if @ads.nil?
@reklame = Reklamer.find(@koder.sample)
@ads[0] = @reklame.id
if @ads[0] == @ads[1]
begin from start method from start
end
end
是否有方法重新启动方法/操作,使其从顶部开始?
答案 0 :(得分:1)
您可以使用ruby-goto,但我肯定会建议不要这样做。
有关不使用goto语句的原因的详细信息,请查看this question。它基于C#,但我认为它很好地涵盖了这一点。
答案 1 :(得分:1)
不确定你想要完成什么,但听起来你需要某种循环。这样的事情会做你需要的吗?
def blabla
@ads ||= ["1", "1"]
# careful with comparing a string ("2") to a numeric id
while @ads[0] == @ads[1] do
@reklame = Reklamer.find(@koder.sample)
@ads[0] = @reklame.id
end
end
基本上,您不断重置@ads[0]
,直到与@ads[1]
不同。
答案 2 :(得分:1)
尝试关键字retry
,此关键字将从头开始重新启动迭代,因此请考虑重建您的方法以使用迭代,例如:
def blabla
@ads = ["1", "2"] if @ads.nil?
@ads.each_slice do |prev_,next_|
@reklame = Reklamer.find(@koder.sample)
prev_ = @reklame.id
retry if prev_ == next_
end
end
关键字redo
也会重复当前的迭代。