From: "matz (Yukihiro Matsumoto)" Date: 2013-06-21T06:51:46+09:00 Subject: [ruby-dev:47457] [ruby-trunk - Bug #8552][Rejected] ifやwhile構文の条件式中に多重代入文を入れると正しく解釈されません Issue #8552 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Rejected エラーメッセージにもある通り、現在多重代入を条件式に入れることを意図的に禁止しています。 多重代入はかならず真になるため、条件に登場するのは本質的には無意味で、「わざと」か「書き間違い」かのいずれかです。これを許すよりは書き間違いを検出する方が適切だと考えます。 Matz. ---------------------------------------- Bug #8552: ifやwhile構文の条件式中に多重代入文を入れると正しく解釈されません https://bugs.ruby-lang.org/issues/8552#change-40070 Author: YukiHoshino (Yuki Hoshino) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p429 (2013-05-15) [i386-mingw32] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN 再現コード puts "ok" if (a,b=0,0) ruby -v ruby 1.9.3p429 (2013-05-15) [i386-mingw32] 実行結果 bug.rb:1: multiple assignment in conditional puts "ok" if (a,b=0,0) ^ 多重代入文では右辺を評価した結果得られる配列が、文全体の戻り値になるはずです。 よって、この場合は[0,0]となり、falseでもnilでもないのでputs "ok"が実行されるべきと考えます。 -- http://bugs.ruby-lang.org/