定义方法声明哪个参数是实现类型

时间:2019-07-09 01:21:16

标签: scala

我有一个扩展功能的类Calculator。函数自变量类型是称为InputData的特征,函数输出类型是另一个特征OutputData

我需要重写apply方法。问题是,我没有扩展InputData的case类作为参数。

class Calculator extends (InputData => OutputData) {
  override def apply(data: Numbers): MathResult = { ... }
}

case class Numbers(x1: Int, x2: Int) extends InputData

case class MathResult(y: Int) extends OutputData

当我尝试这样做时,我得到Method 'apply' overrides nothing

1 个答案:

答案 0 :(得分:0)

这无法完成。

  1. 方法参数说它可以接收每个InputData子类型,如果为参数指定具体类型,则实际上是在限制输入类型,破坏了方法的声明,因此错误{{1 }}。 (感谢@Luis)

  2. 实际上,此抽象对于用例不是必需的。您可以声明一个名为Method 'apply' overrides nothing的方法,并且仍然可以使用打开和关闭括号进行调用。 (感谢@natan)