※今回の問題は、解答に確証も自信もありません。
=> 正解らしいものを教えてもらったので、末尾に追記しました。
a ||= 1
上と同じことを、別の書き方で実現してください。
不正解 その1
a || (a=1)
# => NameError: undefined local variable or method `a' for main:Object
不正解 その2
a = (a||1)
これは、次のようなクラスがあった場合異なります。
恣意的で捻くれたクラスですが....
class Hoge
def v
@v ? nil : 1
end
def v=(val)
@v = val
end
end
ぼくなりの解答
(a=1 unless a) || a
いまのところ合っていると思ってるのですが、間違っているかもしれません。ぜひ反例を教えてください。
別解答
if defined?(m) && m then m else m = 1 end
以上です。ありがとうございます。
追記
上のリンクに以下のような記述がありました。
x = "(some fallback value)" unless respond_to? :x or x
たぶん、これが正解で、ぼくの解答は少し間違っていると思います。ただ、反例を導き出す元気が今はありません。 m(..)m