为了掌握 Scala 类和特征的窍门,这里有一个简单的例子。我想定义一个指定各种操作的类,可以通过多种方式实现。我可以从以下开始:
sealed trait Operations{
def add
def multiply
}
例如,我可能会用一个对象实例化这个类add
and 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
and multiply
,无论它们是什么。
我需要改变什么doOperations
,我在这里误解了什么?谢谢