如果你正在尝试掌握Scala类和特质,这里有一个简单的例子。我想定义一个类,它指定了多种操作,可以用许多方式实现。我可能会从以下内容开始:
sealed trait Operations{
def add
def multiply
}
例如,我可能会使用一个带有`add`和`multiply`方法的对象实例化这个类,这些方法非常合理。
case object CorrectOperations extends Operations{
def add(a:Double,b:Double)= a+b
def multiply(a:Double,b:Double)= a*b
}
此外,还有其他定义这些操作的方法,例如这种明显错误的方法:
case object SillyOperations extends Operations{
def add(a:Double,b:Double)= a + b - 10
def multiply(a:Double,b:Double)= a/b
}
我希望将这样一个实例传递到一个函数中,该函数将以特定方式执行操作。
def doOperations(a:Double,b:Double, op:operations) = {
op.multiply(a,b) - op.add(a,b)
}
我希望
doOperations
可以接受任何类型为operations
的对象,这样我就可以使用其中的add
和multiply
方法。请问我需要如何修改doOperations
方法?我的理解是否正确?谢谢。
override def add = a+b
,似乎我仍然需要签名... - keegan