Я часто это делаю в javascript
some_var || some_var = function(){ return "blah"}();
Мне интересно, каким может быть эквивалент в ruby, поэтому я могу сделать
some_var ||= # sequence of operations
edit
Proc.new.call
было доведено до моего сведения, но я также натолкнулся на это в чьем-то коде:
a ||= begin
# do some stuff
# return some stuff
end
Функционально ли это эквивалентно использованию Proc.new.call
??
edit2 Люди, похоже, не понимают, чего я пытаюсь достичь.Представьте себе это в javascript:
function someExpensiveFunction(){
# do some really expensive stuff
return "some expensive calculations"
}
a || a = someExpensiveFunction();
Очевидно, устанавливает a
один раз ... вызывает дорогую функцию один раз ... В этом случае меня не волнует область видимости, мне просто нужно, чтобы мое возвращаемое значение быловычисляемая последовательность событий, а не одно значение.
Я почти уверен, что мой приведенный выше пример a ||= begin; ... end;
эквивалентен ...