gotoステートメントのように、指定された行から開始する方法はありますか?
24773 次
4 に答える
28
まず、コマンドではなくステートメントになります。次に、ruby-gotoを参照してください。第三に、注意してください
カテゴリ:図書館/悪
于 2009-10-28T02:37:13.070 に答える
4
ruby コマンドラインスイッチがあり-x
ます。
-x[directory] スクリプトがメッセージに埋め込まれていることを Ruby に伝えます。 先頭のゴミは最初のゴミまで捨てられます 「#!」で始まる 文字列「ruby」が含まれています。どれでも その行の意味のあるスイッチが適用されます。の終わり script は、EOF、^D (control-D)、 ^Z (control-Z)、または予約語 __END__。もし直接 tory name を指定すると、Ruby はそのディレクトリに切り替えます スクリプト実行前。
ところで、ruby-goto は冗談だったと思います。ダウンロードリンクが機能したことはないと思います。それとも、人々にそれを指摘して黙っているだけですか?私は決して知りません...
ruby-goto を発表した後の Ryan の次の行が気に入りました。
次の邪悪なモジュールにご期待ください... ruby-malloc! 良い1日を。
ライアンは明らかに天才です。
于 2009-10-28T02:45:22.273 に答える
3
goto lib はまだあります: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 に答える