Jest naprawdę miło być w stanie napisaćPrzypisanie ruby podwójnej z blokiem/proc/lambda?
@foo ||= "bar_default"
lub
@foo ||= myobject.bar(args)
ale czekałem, aby sprawdzić, czy istnieje sposób, aby napisać coś podobnego
@foo ||= do
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
z grubsza odpowiadający faktycznie funkcjonalnemu kodowi, do czegoś podobnego do
@foo = if [email protected]?
@foo
else
myobject.attr = new_val
myobject.other_attr = other_new_val
myobject.bar(args)
end
I przypuszczam, że mógłbym napisać własną globalną metodę, taką jak "getblock", aby zawijać i zwracać wynik dowolnego bloku ogólnego, ale zastanawiam się, czy istnieje już wbudowany sposób, aby to zrobić.
Czy to wszystko jest wątek bezpieczne? – mlt