[ruby-list:50580] Re: [質問] 変数pが定義されている時のabsの動作について
From:
Masaya Konishi <mkonishi1981@...>
Date:
2017-09-05 08:28:14 UTC
List:
ruby-list #50580
こんにちは 小西と申します。 rubyの実装を知っているわけではないので、憶測になりますが おそらく同じスコープに、 「変数 p」と「メソッド p」が混在しているため 文脈で p をどちらか判断するさいに、 p (-1.3) までをメソッド呼び出しとして判断したのだと思います。 p は引数を戻すので、その後の abs メソッドもエラーにならず呼ばれています。 つまり (p (-1.3)).abs として、動いたのだと思います。 2017年9月4日(月) 9:38 Katsunori Nakai <bigswim.atom@gmail.com>: > 初めて投稿させて頂きます。中井と申します。 > 既出の質問でしたら済みません。 > > #p = 2 > p (-1.3).abs > puts (-1.3).abs > > とすると、outputが > 1.3 > 1.3 > となりますが、#を消してpを変数として使うとoutputが > -1.3 > 1.3 > となりました。 > > どうしてpを変数として使うと、1行目のoutputで負の数値が返ってくるのでしょうか? > > ちなみに、ruby 2.4.1p111での動作です。 > > よろしくお願いします。 > > 中井 >