self-type

    0热度

    1回答

    我有一个特点,代表了一些模块,暴露出一些公共方法(觉得服务): trait X { def exposeMe: AService = ... def keepMeHidden: BService = ... } 然后,我有一个Y模块,需要服务从X 。 Y的客户还需要X提供一项服务。但我不希望他们只依赖这一项服务,而要依靠整个X。我想要“出口”一种服务是公开的。 trait

    3热度

    1回答

    在scala中是否有任何方法来将特征的自我类型定义为个案类,如同“任何情况下的类”一样?我想要一个自我类型能够使用案例类的.copy方法,强制其自我类型是某些案例类不是常规类。我认为,结构类型将无济于事,因为它们需要包含特定参数的签名(对于任何案例类别,我都可能不是结构类型)。 请放弃“如果你需要你必须做错事”,因为我已经开始了,但我的api设计 - 如果上述可能会变得更加轻松。我对下一次也很好奇

    0热度

    1回答

    我想要求一个case class来实现某些特性中的至少一个。 我想,我可以使用自助式注释是这样的: case class DisqualifiedDate(override val paths: Set[DatePath], override val cal: Calendar) extends CalendricDate(paths,cal){ this: DateErro

    1热度

    1回答

    为什么我不能在类的主体中定义构造函数arg myval?例如特质是无法看到的构造ARG如下所示: scala> class A(myval: String){} scala> trait B { | this: A => | println(myval) | } <console>:8: error: not found: type A this:

    7热度

    2回答

    我有一些在其伴侣对象中定义了方法tupled的案例类。从下面的伴随对象代码可以看出,它只是代码复制。 case class Book(id: Int, isbn: String, name: String) object Book { def tupled = (Book.apply _).tupled // Duplication } case class Author(i

    1热度

    1回答

    我想在自我类型特征中获得对Scala中自我类型注释的具体类型的引用。我有这样的事情: trait Foo class FooImpl1 extends Foo class FooImpl2 extends Foo trait SpecialFoo { this:Foo => def |+|(that:this.type):this.type // the type s

    4热度

    2回答

    斯卡拉自我型这并不编译: trait FileSystem { type P <: Path[this.type] } trait Path[S <: FileSystem] { self: fileSystem.P => val fileSystem: S } 自-type约束如何依赖在性状的数值成员吗?

    0热度

    1回答

    我有一个控制器: class HomeController @Inject() (cc: ControllerComponents) extends AbstractController(cc)with Logging { this: SecuredActionByToken => def index = CheckedToken{ ... 凡SecuredAction

    1热度

    2回答

    认可我想一个类来迫使它的子类实现子性状的性状,并试图此: sealed trait TA sealed trait TB extends TA sealed trait TC extends TA sealed trait CA { this: TA => } final class CB extends CA with TB final class CC extends

    2热度

    1回答

    我有一个隐式类需要用户数据库。我想在隐式类中使用自我类型,因此我可以将测试范围内的数据库实现切换到模拟版本。在这种情况下,我如何混合数据库提供者?例如,我希望RuchUser的用户不用担心必须通过提供默认混音来混合UserDatabaseProvider。因此,用户可以只做User("name").userContext,并在测试范围内执行相同的操作,我将提供默认混合使用模拟数据库提供程序? ca