2
私は暗黙的なクラスでいくつかの実験を行っており、次の問題が出てきました。ここでは、次のとおりです。Scalaで括弧を省略しています
object Main extends App {
implicit class IntExtractor(str: String){
def extractInt(i: Int): Int = i + str.##
}
implicit class ArrayCreator(i: Int){
def -->(ii: Int): Array[Int] = Array[Int](i, ii)
def createArray(ii: Int): Array[Int] = Array[Int](i, ii)
}
"STR" extractInt 10 createArray 11 //fine
("STR" extractInt 10) --> 11 //fine
"STR" extractInt 10 --> 11 //compile-error
}
何が-->
方法で例をコンパイルしていない理由は?私は-->
がScala
の完全に有効な識別子だと思いました。他の識別子と同様です。 Scalaで
そして ' - >'は最初の例を使っているので、問題は ' - >'ではないことを知るべきです。問題はそれらの 'カッコ 'がないことにある。 –
@SarveshKumarSinghはい、私の悪いです。それは実際に簡単です。ありがとうございました。 –
Scalaは他のほとんどの言語と同様に、右側から式を評価し始めます。したがって、優先順位が等しい「演算子」の場合、最初に右のものが評価されます。あなたの '' STR "extractInt 10 - > 11'は' 'STR" extractInt(10 - > 11) 'として扱われ、' 'extractInt''は' - > 'の結果を得ます。引数としての配列です。しかし、 'extractInt'はコンパイルエラーにつながる' Int'を期待しています。 –