条件演算子の右辺に代入

今更の話題ですが、

Ruby は、以下のような代入が書けるので、三項演算子の右辺に代入が書けても違和感ないですよね。

a = b = 0                   # こんな代入が書ける。
lhs = cond ? a : b = 0      # だから違和感なし。
lhs = cond ? a = 1 : b = 0  # これは違和感あり。

でも冷静に考えると、上記の三項演算子は、こういうことですよね。

lhs = cond ? (a = 1) : (b = 0)

演算子の優先順位では ?: の方が = より高いけど、それは ?: の結果を代入するときの話ですよね。

(「ですよね」ばっかりだけど)