Es ist wirklich schön, dass man schreibenRuby Doppelrohr Zuweisung mit Block/proc/Lambda?
@foo ||= "bar_default"
oder
@foo ||= myobject.bar(args)
aber ich habe mich zu sehen, ob es einen Weg gibt, etwas wie
@foo ||= do
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
schreiben grob äquivilent in tatsächlich Funktionscode zu etwas wie
@foo = if [email protected]?
@foo
else
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
Und ich denke, ich könnte meine eigene globale Methode wie "getblock" schreiben, um das Ergebnis eines allgemeinen Blocks zu umbrechen und zurückzugeben, aber ich frage mich, ob es bereits eine eingebaute Möglichkeit dafür gibt.
Ist es Thread-sicher? – mlt