对象'扩展'通过自己的领域/方法?

时间:2015-03-26 17:52:31

标签: scala

鉴于以下课程:

scala> class Foo(x: Int) {}
defined class Foo

extend使用其字段/方法object是否可以scala> object Bar extends Foo(f) { | lazy val f = 100 | } <console>:8: error: not found: value f object Bar extends Foo(f) { ^ Foo

{{1}}

1 个答案:

答案 0 :(得分:5)

要跟进我的评论,是的,这是可能的,这要归功于Scala的早期初始化语法:

object Bar extends {
  val f = 100
} with Foo(f)

如果f很懒,这不会起作用,但鉴于Foo的构造函数是按值计算的,这里没有任何真正的区别,无论如何