相关疑难解决方法(0)

方便的方法来显示一个类的线性化?

我敢打赌,有一些时髦的方法可以通过新的反射库和/或repl电源模式在repl中显示线性化.这些是什么?

在我的特定情况下,我试图理解ArrayBuffer实例的线性化.
(我正在尝试创建一个类似于Buffer和IndexedSeqOptimized的类,我发现编译器抱怨重写方法seq具有不兼容的类型)

scala规范第5.1.2节中描述了scala类的线性化规则.据我了解,方法覆盖按线性化顺序进行,初始化按反向线性化顺序进行.

scala read-eval-print-loop

6
推荐指数
1
解决办法
595
查看次数

可堆叠特征中的继承和代码重用

在这个简化的实验中,我希望能够快速构建一个具有可堆叠特征的类,该类可以报告用于构建它的特征.这让我想起了装饰器模式,但我更喜欢在编译时而不是在运行时实现它.

冗余代码的工作示例

class TraitTest {
  def report(d: Int) : Unit = {
    println(s"At depth $d, we've reached the end of our recursion")
  }
}

trait Moo  extends TraitTest {
  private def sound = "Moo"
  override def report(d: Int) : Unit = {
    println(s"At depth $d, I make the sound '$sound'")
    super.report(d+1)
  }
}
trait Quack extends TraitTest {
  private def sound = "Quack"
  override def report(d: Int) : Unit = {
    println(s"At depth $d, I make the sound '$sound'")
    super.report(d+1) …
Run Code Online (Sandbox Code Playgroud)

inheritance scala traits mixins

5
推荐指数
1
解决办法
1705
查看次数