我已经阅读了关于从伴随类继承的对象的问题。
例如:
但我有一点不同的问题(我不确定这是一个错误)
我有以下代码:
class Scala(name: String)
import Scala._
object Scala extends Scala(TEST_NAME){
val TEST_NAME = "test name"
}
请注意,我使用的是在伴随对象范围内定义的变量,然后将其传递给 super 的构造函数。
我收到以下编译错误:
Scala.scala:5: error: super constructor cannot be passed a self reference
unless parameter is declared by-name
object Scala extends Scala(TEST_NAME){
^
one error found
我尝试过的其他变体:
按姓名呼叫:
class Scala(name: => String)
import Scala._
object Scala extends Scala(TEST_NAME){
val TEST_NAME = "test name"
}
命名参数:
class Scala(name: String)
import Scala._
object Scala extends Scala(name = TEST_NAME){
val TEST_NAME = "test name"
}
两个都:
class Scala(name: => String)
import Scala._
object Scala extends Scala(name = TEST_NAME){
val TEST_NAME = "test name"
}
一些环境细节:
- 爪哇:
java version "1.8.0_144"
- 爪哇:
javac 1.8.0_144
- 斯卡拉:
Scala code runner version 2.12.3
- 斯卡拉克:
Scala compiler version 2.12.3
- 操作系统:
Darwin ***.local 17.0.0 Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RELEASE_X86_64 x86_64
更新:
对于有兴趣解决此问题的任何人: