一个基本的东西让我不知所措。比方说,我在Scala中有一个对象或类:
object MyClass {
def start(a: Int) = { ... }
}
调用start
方法时,我希望在调用时执行一些操作。我想知道,这是添加onStart
函数的Scala方法吗?
object MyClass {
def start(a: Int) = {
//....doing something
onStart(a)
}
}
在C#中我使用event
。但是在这里我要么完全忘记了要做什么,要么Scala本身没有这样的容量,我能做的就是使用观察者模式。
如何“订阅”onStart(a)
(如果必须)?如果没有,我应该使用什么?不过,我可以向start
添加一个额外的参数(函数回调)。
答案 0 :(得分:0)
import scala.collection.mutable.Publisher
import scala.collection.mutable.Subscriber
abstract class Event
case class OnStart(a : Int) extends Event
object MyClass extends Publisher[Event] {
def start(a: Int) = {
// do something handy
publish(OnStart(a))
}
}
object Client extends App with Subscriber[Event, Publisher[Event]] {
MyClass.subscribe(this)
MyClass.start(10)
override def notify(pub: Publisher[Event], event: Event) : Unit = {
event match {
case OnStart(a) => print("OnStart event")
}
}
}