Scala对超类构造函数参数的处理令我感到困惑......
使用此代码:
class ArrayElement(val contents: Array[String]) {
...
}
class LineElement(s: String) extends ArrayElement(Array(s)) {
...
}
Run Code Online (Sandbox Code Playgroud)
LineElement被声明为扩展ArrayElement,我觉得Array(s)参数in ArrayElement(Array(s))正在创建一个Array实例 - 运行时??? 这是scala的合成糖还是还有其他东西在这里?
是的,Array(s)表达式在运行时进行评估.
class Foo (val x: Int)
class Bar (x: Int, y: Int) extends Foo(x + y)
Run Code Online (Sandbox Code Playgroud)
Scala允许在对超类的构造函数的调用中使用表达式(类似于Java使用它的方式super(...)).这些表达式在运行时进行评估.
| 归档时间: |
|
| 查看次数: |
5071 次 |
| 最近记录: |