Seb*_*hof 4 methods scala function list hashmap
我对scala很新,基本上我想在hashmap中将一些函数耦合到一个字符串.但是我在subscriber.get(e.key)(e.EventArgs)中收到错误; 声明Option [EventArgs => Unit]不接受参数...示例代码:
object Monitor {
val subscribers = HashMap.empty[String, (EventArgs) => Unit ]
def trigger(e : Event){
subscribers.get(e.key)(e.EventArgs);
}
def subscribe(key: String, e: (EventArgs) => Unit) {
subscribers += key -> e;
}
}
Run Code Online (Sandbox Code Playgroud)
a的get方法Map为您提供Option值,而不是值.因此,如果在地图中找到钥匙,你得到Some(value),如果没有,你得到None.因此,您需要首先"展开"该选项,以确保实际上有一个可以调用的函数值(调用apply):
def trigger(e: Event): Unit =
subscribers.get(e.key).foreach(_.apply(e.EventArgs))
Run Code Online (Sandbox Code Playgroud)
要么
def trigger(e: Event): Unit =
subscribers.get(e.key) match {
case Some(value) => value(e.EventArgs)
case None =>
}
Run Code Online (Sandbox Code Playgroud)
围绕解释Scala的Option类型有很多帖子.例如这一个或这个.
另请注意 Luigi关于使用不可变映射(默认值Map)的说法var.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |