У меня есть вопрос относительно оператора || = в ruby, и это представляет для меня особый интерес, поскольку я использую его для записи в memcache. Мне интересно, делает ли || = сначала проверять приемник, чтобы увидеть, задан ли он перед вызовом этого сеттера, или это буквально псевдоним x = x || y
Это не имеет особого значения в случае нормальной переменной, но использует что-то вроде:
CACHE[:some_key] ||= "Some String"
может сделать запись memcache, которая дороже, чем простой набор переменных. Я не мог найти ничего о || = в ruby api, как ни странно, поэтому сам не смог ответить.
Конечно, я знаю, что:
CACHE[:some_key] = "Some String" if CACHE[:some_key].nil?
достигнет этого, я просто ищу самый краткий синтаксис.