thisとthisを含むいくつかのことを読みましたが、以下の例は彼らが話していることとは異なると思います。実際、ある人が議論の中で同様の例を挙げていますが、無視されています。
したがって、irb で実行します (条件の代入に関する警告は無視してください)。
(puts x) if (x = 0) # NameError: undefined local variable or method `x'...
x # => 0
(puts x) if (x = 0) # "0", => nil
しかし、2回目はエラーがありません。
これは、「パーサーが実際に何をしているかを理解し、これがいくつかの最適化にすぎないことを理解すると、すべてが明確になる」ような方法でも意味がありますか? 私には、それはかなり望ましくないように思えるからです。
明確にするために、上記の条件式は同等である必要があります(正しいですか?)
if newvar=0
puts newvar
end
これはエラーを発生させません。
更新: この質問がされてから、このトピックに関する投稿がさらに増えました。例
: http://seejohncode.com/2012/07/31/ruby-gotcha-single-line-conditionals/。