【问题标题】:What does it mean to instantiate a trait?实例化一个特征是什么意思?
【发布时间】:2011-05-27 17:11:53
【问题描述】:

我是 Scala 新手,在 O'Reilly 的 Programming Scala 书中,作者展示了一些实例化特征的代码。鉴于 trait 有点类似于 Java 中的接口(尽管我知道 trait 是作为字节码中的类实现的),那么实例化 trait 意味着什么,什么是合适的用例/设计模式?

例如:

scala> val x = new T1 with T2 { type z = String val v: z = "Z" } 
x: java.lang.Object with T1 with T2{type z = String; def zv: this.z} = $anon$1@9d9347d

【问题讨论】:

    标签: scala


    【解决方案1】:

    我对 Scala 也相当陌生,但我认为您上面的示例是创建一个新的匿名对象(就像您可以使用 Java 一样),然后将 Trait 附加到新的匿名类型。

    由于 Scala Trait 可以包含实现代码,因此您基本上可以免费获得 Trait 的行为,假设匿名类满足 Trait 的任何要求(例如设置值或定义“抽象”方法)。

    因此,您在这里所做的不是直接实例化 Trait,而是为 Trait 创建一个合适的对象以将其自身附加到,这样您就可以使用 Trait 的功能,而无需定义扩展 Trait 的类。

    这能回答你的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多