在Scala中是否有可能在一个类中有两个具有相同签名的方法?

时间:2011-08-27 23:19:31

标签: scala

我想编写一个库,客户端可以编写如下代码。它是伪Scala,因为我不知道它是否在语法上可能

class ClientCode {

    historical {
        override def onTrade() { // historcal processing here}  
    }

    override def onTrade() { // real time processing here }
}

基本上我想做的是将交易数据发送给客户。历史数据和实时数据都有不同的业务规则。从语法上讲,我希望所有内容都由onTrade()处理。我可以做类似以下的事情

override def onTrade() {

    if (historical) { } ...
    else {} 

}

然而,与长期和强制性的实时规则相比,历史规则是简短且可选的,因此我发现上述语法有点麻烦。

1 个答案:

答案 0 :(得分:1)

你可以有一个特质

trait Historical extends ClientCode {
  override def onTrade() { ... }
}

然后

val c = new ClientCode with Historical

使用被覆盖的onTrade()。那够了吗?