在 Scala 中省略括号
Omiting parenthesis in 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 中运算符的优先级取决于其名称的第一个 symbol/character,如此处所述 1,优先级顺序为
- (所有字母)
|
^
&
=
!
<
>
:
+
-
*
/
%
- (所有其他特殊字符)
这就是为什么 "STR" extractInt 10 createArray 11
被解析为 ("STR" extractInt 10) createArray 11
而 "STR" extractInt 10 --> 11
被解析为 "STR" extractInt (10 --> 11)
然后产生编译错误的原因。
我 运行 进行了一些隐式 类 的实验,并提出了以下问题。这是:
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 中运算符的优先级取决于其名称的第一个 symbol/character,如此处所述 1,优先级顺序为
- (所有字母)
|
^
&
=
!
<
>
:
+
-
*
/
%
- (所有其他特殊字符)
这就是为什么 "STR" extractInt 10 createArray 11
被解析为 ("STR" extractInt 10) createArray 11
而 "STR" extractInt 10 --> 11
被解析为 "STR" extractInt (10 --> 11)
然后产生编译错误的原因。