Java Scala-超级can';不能称为中缀
假设我有以下结构Java Scala-超级can';不能称为中缀,java,scala,Java,Scala,假设我有以下结构 trait A { def \ (v: String) = ... def + (v: String) = ... } case class B extends A { override def \ (v: String) = { // Do something here super \ v } override def + (v: String) = { // Do something
trait A {
def \ (v: String) = ...
def + (v: String) = ...
}
case class B extends A {
override def \ (v: String) = {
// Do something here
super \ v
}
override def + (v: String) = {
// Do something here
this + v
}
}
在super\v
中,我收到一个错误,说“应该是”。但找到了标识符
如果我使用点表示法而不是中缀表示法,则此代码有效:super.\(v)
所以我的问题是:
为什么我不能将中缀运算符与super
一起使用,但我可以将它们与this
一起使用?
这是scala中的某种Java东西,还是背后有某种思维过程?来自:
因此,super
本身并不是一个表达式,至少可以看到中缀运算的左侧操作数必须是一个表达式(更准确地说,PrefixExpr
,它被定义为['-'|'+'|'~'|'!']SimpleExpr
)
SimpleExpr ::= [id `.'] `this'
| [id '.'] `super' [ClassQualifier] `.' id