2014-01-12 11 views
7

私はScalaチュートリアルを実行していますが、実際にはすべての演算子がメソッド呼び出しであると説明しています。だから、1 * 2が本当にある:スカラメソッド呼び出しでintをかっこにする理由

scala> (1).*(2) 
res1: Int = 2 

ただ、何が起こるかを見るために、私が走った:

scala> 1.*(2) 
warning: there were 1 deprecation warning(s); re-run with -deprecation for details 
res2: Double = 2.0 

だから私は非推奨フラグで再びそれを実行し、私が手:

scala> 1.*(2) 
<console>:1: warning: This lexical syntax is deprecated. From scala 2.11, a dot will only be considered part of a number if it is immediately followed by a digit. 
     1.*(2) 

はでした誰か私にこの警告を説明してくださいまた、scala> (1).*(2)の1の周りのかっこの目的は私に説明してください?

答えて

21

あなたが1.*(2)を言うとき、それはあなたが意味するかどうかについての曖昧です:

(1).*(2)1.は有効な構文の意味であることから、二重になりのInt

または

(1.)*(2)、その結果どのDouble

Scalaは現在、2番目のものとして扱いますが、正しい動作は明白でないため、 Scala 2.11以降を最初のものと同じように扱うために変更しています。 Scalaは、その動作が変わることを警告します。

関連する問題