self-type

    5热度

    1回答

    我必须将一些宏集成到使用蛋糕模式的项目中。这种模式使我们能够避免大量的进口以及其他优势,所以我们希望保留它。现在,我们遇到了一些我们在主干外测试的实验宏的问题。首先,让我们展现一个虚拟的命名蛋糕系统: trait APiece { class A } trait BPiece { this: APiece => def aMacro(a: A): Unit =() /*

    29热度

    2回答

    没有类型/差异自我引用我的理解使用了explicitly typed self-references: trait T { self : T2 => ... } 在体内,self是一个别名this但有更精确的类型T with T2。 现在,我已经看到了这个代码: trait T { self => ... } 也就是说,没有额外的类型信息,明确自

    3热度

    2回答

    鉴于Outer类和它的Inner类的抽象定义,我想实例化在Outer1特征中定义的具体类Inner1。 abstract class Outer { type Inner_Tp <: Inner; abstract class Inner { self: Inner_Tp => } } trait Outer1 { self: Outer =

    4热度

    1回答

    类型别名我这种情况 object SuperHorribleLongName { trait X { private[SuperHorribleLongName] def internalGaga() : Unit } } ,我试图让这样的工作: object SuperHorribleLongName { private type Sup = Su

    2热度

    3回答

    我想重写ScalaTest特征BeforeAndAfterEach来为所有测试实现一次这些东西。最后我把它编译出来,但我不明白为什么。 trait MySetup extends BeforeAndAfterEach { this : org.scalatest.BeforeAndAfterEach with org.scalatest.Suite => var service

    19热度

    1回答

    除了继承方面,是有以下类模板之间的差: 1| trait TraitA extends TraitB 2| trait TraitA { self: TraitB => } 我想在TraitA和TraitB之间分担责任,但前者在没有后者的情况下无法运作。 你会如何表达这个意图是什么?对我来说,解决方案[2]将是更自然的方法。然而,我不想把实施者的负担放在混合需要混合的东西上。

    5热度

    1回答

    可能重复: What is the difference between scala self-types and trait subclasses? 我明白了一个自我注解作为承诺的编译器,其中编程器体现一个特征将与注释之一混入。例如: scala> trait X defined trait X scala> trait Y { this: X => } defined trait Y

    6热度

    1回答

    scala> class A defined class A scala> class B {this: A => } defined class B scala> new B <console>:10: error: class B cannot be instantiated because it does not conform to its self-type B with

    12热度

    3回答

    自型看起来像以下示例: trait A { self: String => } 这是说,该性状A(或它的一个子类型)必须继承类String。 关键字self后跟:类似物到一个变量中var s: String,其中类型来:之后。 但是=>在自我类型中声明的是什么?这背后的原因是什么?

    8热度

    2回答

    我想围绕抽象和明确的自我类型在斯卡拉我的头。 让我们考虑这个例子: 我想创建一个可扩展的树这么简单一个基地: trait Tree { def children: Iterable[Tree] def descendants: Iterable[Tree] = { val dv = children.view; dv ++ (dv.flatMap { _.children })