有没有办法从指定的行开始,比如 goto 语句?
问问题
24773 次
4 回答
28
首先,它是声明,而不是命令。其次,参见ruby-goto。三、注意
类别:图书馆/邪恶
于 2009-10-28T02:37:13.070 回答
4
有 ruby 命令行开关-x
。
-x[directory] 告诉 Ruby 脚本嵌入在消息中。 领先的垃圾将被丢弃,直到第一个 以。。开始 ”#!” 并包含字符串“ruby”。任何 将应用该行上有意义的开关。结尾 必须使用 EOF、^D (control-D)、 ^Z (control-Z),或保留字 __END__。如果直接 指定了 tory 名称,Ruby 将切换到该目录 在执行脚本之前。
顺便说一句,我很确定 ruby-goto 是,嗯,一个笑话。我不相信下载链接曾经有效。还是我只是应该向人们指出它并保持安静?我从来都不知道...
在宣布 ruby-goto 之后,我喜欢 Ryan 的下一行:
请继续关注下一个邪恶模块... ruby-malloc!祝你今天过得愉快。
瑞恩显然是个天才。
于 2009-10-28T02:45:22.273 回答
3
goto 库仍在我们身边:D https://rubygems.org/gems/goto/versions/0
为后代保存整个宝石:
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
于 2016-01-09T20:30:47.297 回答
2
我不这么认为(而且,尽管如此,它不应该如此)。
但是goto
,如果您真的很受虐,则可以使用一个模块。
于 2009-10-28T02:39:20.190 回答