Czy istnieje sposób, aby zacząć od określonej linii, np. Instrukcja goto?Czy w Ruby jest instrukcja goto?
Odpowiedz
Po pierwsze, byłoby to polecenie, a nie polecenie. Po drugie, patrz ruby-goto. Po trzecie, trzeba pamiętać
Kategoria: Library/Zła
Nie wierzę więc (i przez wszystkie świętości, że nie powinien).
Ale jest tam moduł goto
, jeśli czujesz się naprawdę masochistycznie.
Istnieje przełącznik linii poleceń ruby -x
.
-x[directory] Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first that starts with “#!” and contains the string, “ruby”. Any meaningful switches on that line will applied. The end of script must be specified with either EOF, ^D (control-D), ^Z (control-Z), or reserved word __END__. If the direc‐ tory name is specified, Ruby will switch to that directory before executing script.
Przysięgam, jestem prawie pewien, że rubin-goto był żartem. Nie wierzę, że link do pobrania kiedykolwiek działał. Czy powinienem po prostu wskazać ludziom to i milczeć? Nigdy nie wiem ...
lubiłem następną linię Ryana po ogłoszeniu Ruby-goto:
zaglądajcie do następnego modułu złego ... ruby-malloc! Miłego dnia.
Ryan jest ewidentnie geniuszem.
goto lib wciąż jest z nami: D https://rubygems.org/gems/goto/versions/0
Oszczędzanie cały gem dla potomności:
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
- 1. Czy jest lepszy sposób niż GOTO w tym scenariuszu?
- 2. dirname() w C: czy instrukcja jest nieprawidłowa?
- 3. Czy powszechną praktyką jest "nadużywanie" pętli jako goto
- 4. wysublimowany tekst 3, indeksowanie i symbol goto/goto definicja
- 5. Czy sortowanie w Ruby jest stabilne?
- 6. 'goto * foo', gdzie foo nie jest wskaźnikiem. Co to jest?
- 7. Jaka jest różnica między wywołaniem funkcji a goto i NAME w Perlu?
- 8. Czy instrukcja dla ciągów w python?
- 9. VB.NET Switch Statement GoTo Case
- 10. Czy istnieje instrukcja blokady w VB.NET?
- 11. jeśli instrukcja w javascript zawsze jest prawdziwa
- 12. Jak uniwersalna jest instrukcja LIMIT w SQL?
- 13. Co to jest uprzywilejowana instrukcja?
- 14. użyj goto wewnątrz funkcji php
- 15. Różnice między Coroutines i `goto`?
- 16. Jak używać instrukcji goto w Androidzie
- 17. Jaka jest różnica między instrukcjami BASIC GOTO i GOSUB
- 18. Ruby, sprawdź, czy ciąg znaków jest prawidłowy?
- 19. Ruby sprawdź czy blok jest zerowy
- 20. Instrukcja w środku konkatenacji?
- 21. Czy jest szybsza alternatywa dla Dir.glob Ruby?
- 22. Dlaczego "Wybierz" jest wywoływane jako instrukcja DML?
- 23. Jak sprawdzić, czy obiekt jest zerowy w widoku w Ruby?
- 24. Czy instrukcja "using" zawsze usuwa obiekt?
- 25. Montaż: czy instrukcja xadd wymaga blokady?
- 26. Dlaczego ta instrukcja SQL jest bardzo powolna?
- 27. plik wsadowy: goto in for loop
- 28. Czy instrukcja switch może przyjmować dwa argumenty?
- 29. Czy instrukcja CLR .tail wyłącza wyprzedzające GC?
- 30. Sublime Text 2: Wyłącz 'Goto Anything' Podgląd
obowiązkowe xkcd komiksu: http://xkcd.com/292/ – LiraNuna
żadnego konkretnego powodu chcę wiedzieć? –
Wiem, że możesz w rspec. Może spojrzeć na źródło. –