アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング言語Scalaでの質問です。
 (1).to(5)
(3).+(3)
というようなメソッド呼び出しですが、左側にあるオブジェクトに対して
()を付ける理由がわかりません。1.to(5)であっても動作には問題なく、
他のメソッド呼び出しは左のオブジェクトに()は付けません。
どうして演算子メソッドのオブジェクトには()を付けるのでしょうか?

A 回答 (2件)

Scalaではソースを解析する際,文をひとつひとつの要素に分けていきます。


(1).to(5)ではれば(1), to, (5)というふうに解釈するわけです。そして(1)のtoというメソッドを5という引数で呼び出すんだな、と解釈します。
この時,コンパイラは文法的に正しい最長の部分をひとつの要素とみなします。
したがって
1.to(5) は 1. , to , (5)と解釈されてしまいます。(1.は浮動小数点数のリテラルです)
したがってコンパイラが混乱してしまうというわけです
    • good
    • 0

3. は浮動小数点数のリテラルだけど


浮動小数点数に .to() がなければ、型推論上、整数と推測できる。

3.+() だと、浮動小数点数の足し算になっちゃう。。。かな?

というか、実行してみれば確実にわかる。

紛らわしいし
特に他の問題がないなら、
3+3
3.0+3
って書くと思うよ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!