Ruby中有goto语句吗?

有没有办法从指定的行开始,比如goto语句?

首先,它将是声明,而不是命令。 其次,请参阅ruby-goto 。 第三,注意

类别:图书馆/邪恶

有ruby命令行开关-x

  -x [directory]告诉Ruby脚本嵌入在消息中。
                领先的垃圾将被丢弃,直到第一次
                以“#!”开头并包含字符串“ruby”。 任何
                将应用该行上有意义的开关。 结尾
                必须使用EOF,^ D(control-D)指定脚本,
                 ^ Z(control-Z),或保留字__END__。 如果指示 - 
                指定了tory名称,Ruby将切换到该目录
                在执行脚本之前。

顺便说一句,我很确定ruby-goto是,嗯,是个笑话。 我不相信下载链接曾经有效。 或者我只是想让人们注意并保持安静? 我从来都不知道…

在宣布ruby-goto后,我喜欢Ryan的下一行:

请继续关注下一个邪恶模块…… ruby​​-malloc! 祝你今天愉快。

瑞安显然是个天才。

我不相信(而且,所有这些都是圣洁的,它不应该这样 )。

但是如果你感觉真的很自虐,那就有一个goto模块。

goto lib仍在我们身边:D https://rubygems.org/gems/goto/versions/0

保留后代的整个gem:

 STACK = [] class Label attr_accessor :name; attr_accessor :block; def initialize(name, block); @name = name @block = block end def ==(sym) @name == sym end end class Goto < Exception; attr_accessor :label def initialize(label); @label = label; end end def label(sym, &block) STACK.last << Label.new(sym, block) end def frame_start STACK << [] end def frame_end frame = STACK.pop idx = 0 begin for i in (idx...frame.size) frame[i].block.call if frame[i].block end rescue Goto => g idx = frame.index(g.label) retry end end def goto(label) raise Goto.new(label) end