Ruby方法从一开始就开始方法?

时间:2013-01-08 23:45:11

标签: ruby

实施例(导轨):

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

是否有方法重新启动方法/操作,使其从顶部开始?

3 个答案:

答案 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也会重复当前的迭代。