[英]How to define a method for which the returntype is based on types of argument and type parameter in Scala?
[英]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
。
无法做到这一点。
方法参数说它可以接收每个InputData
子类型,如果为参数指定具体类型,则实际上是在限制输入类型,破坏了方法声明,因此错误Method 'apply' overrides nothing
。 (感谢@Luis)
实际上,对于用例而言,这种抽象不是必需的。 您可以声明一个名为apply
的方法,该方法仍然可以使用打开和关闭括号进行调用。 (感谢@natan)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.