如何通过继承传递akka中的隐式参数?

时间:2014-10-27 05:57:32

标签: scala hierarchy implicit

让我们从班级结构开始

班级结构

基础抽象类

abstract class BaseCass {
    def someFunction() : Any

    //Here is the place where someFunction is called 
    startUpMethod = {
        someFunction()            
    }
}

基础实施

import Utility._
class BaseImpelmentation {
    //These parameters are not passed into method calls
    implicit object ParameterOne = ParameterOne
    implicit object ParameterSecond = ParameterSecond
    implicit object ParameterThird = ParameterThird

    def someFunction() : Any = {
        functionWithImplicitOne();
        functionWithImplicitSecond();
        functionWithImplicitThird();
    }
}

具有隐式函数的类

class Utility {
    //here all function with implicit are defined.
}

算法

    在类初始化时调用
  1. someFunction,例如它在构造函数之后调用,但在类
  2. 中的任何其他方法之前调用
  3. someFunction覆盖了BaseImpelmentation
  4. BaseImpelmentation使用Utility类中的隐式参数导入函数。
  5. 问题

    在BaseClass中调用someFunction时,不使用来自BaseImpelmentation的隐式参数。所以我必须把它们放在BaseCass中。但是在那种情况下,我将一个实现放在抽象类中,这不是很好。

    是否可以将隐式参数放入BaseImpelmentation,但不要将它们作为常规参数传递?

1 个答案:

答案 0 :(得分:0)

如果仅在类完全构造时调用someFunction,那么这应该有效; functionWithImplicitOne() [原文如此]中对BaseImpelmentation的调用将使用ParameterOne,因为它位于调用该方法的范围内。你的问题是别的。什么是实际的错误消息?