的隐含VAL当我写在斯卡拉与case类节目中,我遇到了一个循环模式,我希望把一个案例类的创建者作为参数,以供日后参考。我明白了,我们可以通过把隐性价值的情况下,类抽象案例类
abstract class MessageCreator
case class SomeMessage(s:String)(implicit val creator:MessageCreator)
class MyCreator extends MessageCreator { implicit val creator = this}
class ACreator extends MyCreator { def newMessage = SomeMessage("hello") }
然后捕获这种模式,NewMessage作为这里将有指ACreator自身的实例成员creator
。
现在,我有一堆case类,会做同样的事情。我的问题是,如果每次我想定义这样的案例类时,如何复制并粘贴(implicit val creator:MessageCreator)
,您将如何重复此模式?
我试图定义与隐VAL一个抽象类,然后从案例类继承他们,但Scala的抱怨,从抽象类的隐性VAL的情况下类没有定义。显然,case类不能被继承。
如果不能以编程方式做,我可能会开始寻找到写一个宏(这将是一个精解)。我想确保我不会在这里丢失任何东西。
恕我直言,这样的参数应该明确,只有明确通过。如果你真的需要这个,你可以使用伴侣对象作为工厂来传递创建者参数。 – vitalii
感谢您的评论。如果我有一个伴随对象,比如说'def apply(隐式val创建者:MessageCreator){...}',那么如何让case类继承这样的伴随对象类呢? –