gpt4 book ai didi

java - Scala - super 的中缀运算符不能称为中缀

转载 作者:行者123 更新时间:2023-11-30 06:49:20 25 4
gpt4 key购买 nike

假设我有以下结构

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 事物还是背后有某种思考过程?

最佳答案

来自 http://scala-lang.org/files/archive/spec/2.11/06-expressions.html#this-and-super :

SimpleExpr  ::=  [id `.'] `this'
| [id '.'] `super' [ClassQualifier] `.' id

所以 super 本身不是一个表达式,并且在 http://scala-lang.org/files/archive/spec/2.11/06-expressions.html#infix-operations可以看到中缀运算的左边操作数必须是一个表达式(更准确地说,是一个PrefixExpr,定义为['-' | '+' | '~ ' | '!'] SimpleExpr).

关于java - Scala - super 的中缀运算符不能称为中缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42952103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com