[ruby-list:51024] 演算子優先度について

大谷ともうします。 PHPで、if(!$x = 〜〜〜) という記述を見つけ、 「PHPではこんなのがエラーにならないんだ」と思ったのですが、 念のため、Rubyで !x = 123 をやってみると、Rubyでもエラーにならず false になります。 演算子の優先度を考えると、これは、 (!x) = 123 の意味になって構文エラーになるはずと思ったのですが、 !(x = 123) と見なされているようです。単項演算子 + - でも同様ですね。 これはさすがにバグじゃなくて意図的な仕様だと思うのですが、 演算子優先度の例外を作ってまで、 !(x = 123) -(x = 123) +(x = 123) と見做したいという理由があったのでしょうか? ふとした疑問ですが、ご存じの方、よろしくお願いします。 -- tksotn

小川と申します。
念のため、Rubyで !x = 123 をやってみると、Rubyでもエラーにならず false になります。
これはさすがにバグじゃなくて意図的な仕様だと思うのですが、 演算子優先度の例外を作ってまで、 !(x = 123) -(x = 123) +(x = 123) と見做したいという理由があったのでしょうか?
古いissueに議論があるのを見つけました。 Bug #9251: ! operator has lower precedence than = in an assignment expression https://bugs.ruby-lang.org/issues/9251 こうなっている理由はわかりませんが、今の動作で受け入れられているようですね。 -- 小川建一 mailto:kenichi@ice.email.ne.jp ++

List-Unsubscribe<https://www.bing.com/ck/a?!&&p=cbfa4ebc6aebf5deJmltdHM9MTcxOTEwMDgwMCZpZ3VpZD0yNzRiOGJiNy1jOWVlLTYwZGYtMTNmNS05ZmZjYzgwNDYxMzgmaW5zaWQ9NTI5Nw&ptn=3&ver=2&hsh=3&fclid=274b8bb7-c9ee-60df-13f5-9ffcc8046138&psq=Unsubscribe+%e3%83%a1%e3%83%bc%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%aa%e3%82%b9%e3%83%88&u=a1aHR0cHM6Ly9iYXJlbWFpbC5qcC9ibG9nLzIwMjQvMDIvMTUvMzY5Ni8&ntb=1> ________________________________ 差出人: OGAWA KenIchi via ruby-list <ruby-list@ml.ruby-lang.org> 送信日時: 2024年5月27日 0:57 宛先: ruby-list@ml.ruby-lang.org <ruby-list@ml.ruby-lang.org> CC: OGAWA KenIchi <kenichi@ice.email.ne.jp> 件名: [ruby-list:51025] Re: 演算子優先度について 小川と申します。
念のため、Rubyで !x = 123 をやってみると、Rubyでもエラーにならず false になります。
これはさすがにバグじゃなくて意図的な仕様だと思うのですが、 演算子優先度の例外を作ってまで、 !(x = 123) -(x = 123) +(x = 123) と見做したいという理由があったのでしょうか?
古いissueに議論があるのを見つけました。 Bug #9251: ! operator has lower precedence than = in an assignment expression https://bugs.ruby-lang.org/issues/9251 こうなっている理由はわかりませんが、今の動作で受け入れられているようですね。 -- 小川建一 mailto:kenichi@ice.email.ne.jp ++
participants (3)
-
K.Kon
-
OGAWA KenIchi
-
OOTANI TAKASHI