Actions
Bug #8552
closedifやwhile構文の条件式中に多重代入文を入れると正しく解釈されません
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p429 (2013-05-15) [i386-mingw32]
Backport:
Description
再現コード
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"が実行されるべきと考えます。
Updated by matz (Yukihiro Matsumoto) over 11 years ago
- Status changed from Open to Rejected
エラーメッセージにもある通り、現在多重代入を条件式に入れることを意図的に禁止しています。
多重代入はかならず真になるため、条件に登場するのは本質的には無意味で、「わざと」か「書き間違い」かのいずれかです。これを許すよりは書き間違いを検出する方が適切だと考えます。
Matz.
Actions
Like0
Like0