Mit ein Ruby-block/Befehl im hintergrund fehl, ohne Leerzeichen, 'rescue' - block
Sagen, ich möchte einen Aufruf ausgeführt werden, und wenn es scheitert, ist es keine große Sache; das Programm fortgesetzt werden kann, ohne ein problem. (Ich weiß, dass dies in der Regel schlechte Praxis, aber stellen Sie sich eine hypothetische, schnellen one-off-script und nicht um ein großes Projekt)
Den Weg, den ich gelehrt habe, dies zu tun war:
begin
thing_to_try
rescue
# awkward blank rescue block
end
next_thing
Natürlich, es gibt andere Wege, dies zu tun, einschließlich der Verwendung von ensure
und Dinge wie, dass. Aber gibt es einen Weg, um einen Aufruf der Methode/block zu leise ausfallen, ohne dass das eine schmutzige, leere block?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Methode wie diese, können hilfreich sein.
Definieren Sie möglicherweise diese Methode in
class Object
für die Universelle Verfügbarkeit.Dann können Sie schreiben:
Den wirklichen Vorteil mit diesem Ansatz können Sie mehrzeilige Blöcke, da inline -
rescue
kann nur auf eine einzige Anweisung.begin
denn ich bin die Rettung der gesamten Methodenaufrufsquelch
. Um es anders auszudrücken, diedef
Schlüsselwort ist eine implizitebegin
.squelch { foo } || squelch { bar }
; macht es auf die gleiche Weise handeln wiebegin foo; rescue bar; end
?begin foo; rescue; begin bar; rescue; end; end
(das ist wirklich verwirrend zu schreiben, in eine Zeile!)Es ist die gleiche Idee, aber ein wenig weniger ausführlich, aber Sie können die inline-syntax
nil
in den rescue-block, wenn der code ist zu lange zu gehen, inline. Dies entspricht Rubocop zumindest.Neben Ben's Idee, Sie können auch eine Funktion für das