繁体   English   中英

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

[英]Define method declaration which argument is a implementation type

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

我需要重写apply方法。 问题是,我不能将扩展InputData的案例类作为参数。

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. 方法参数说它可以接收每个InputData子类型,如果为参数指定具体类型,则实际上是在限制输入类型,破坏了方法声明,因此错误Method 'apply' overrides nothing (感谢@Luis)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM