• ベストアンサー

Scala

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

質問者が選んだベストアンサー

  • ベストアンサー
  • a_bc
  • ベストアンサー率100% (1/1)
回答No.2

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

その他の回答 (1)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

3. は浮動小数点数のリテラルだけど 浮動小数点数に .to() がなければ、型推論上、整数と推測できる。 3.+() だと、浮動小数点数の足し算になっちゃう。。。かな? というか、実行してみれば確実にわかる。 紛らわしいし 特に他の問題がないなら、 3+3 3.0+3 って書くと思うよ?

関連するQ&A