在 Scala 中与演员一起使用 Option 和 Some
Use of Option and Some in Scala with actors
如何仅在环境变量为 "true" 时实例化 ActorRef?我阅读了 Option 和 Some 的用法,但我无法实现该构造。
要将环境变量作为一个选项,您可以使用类似的东西:
val maybeVar = Option(System.getenv("YOUR_VAR"))
System.getenv("YOUR_VAR")
可以 return null
但 Option.apply
将其转换为 None
.
另一方面,您不实例化 ActorRef
,您通过以下方式获取这些引用:
- 从消息中获取。
- 创建新演员。
- 使用本地引用,例如
self
因此,例如,您可以根据选项值创建或不创建演员:
val maybeActorRef = maybeVar.map(x => system.actorOf(Props(new ActorWithArgs(x))))
如果想把变量的值作为布尔标志,可以将上面的代码改成:
val maybeActorRef = maybeVar.filter(_ == "true").map(x => system.actorOf(Props(new ActorWithArgs(x))))
甚至:
val maybeActorRef = maybeVar.collect {
case "true" =>
system.actorOf(Props(new Actor()))
}
如何仅在环境变量为 "true" 时实例化 ActorRef?我阅读了 Option 和 Some 的用法,但我无法实现该构造。
要将环境变量作为一个选项,您可以使用类似的东西:
val maybeVar = Option(System.getenv("YOUR_VAR"))
System.getenv("YOUR_VAR")
可以 return null
但 Option.apply
将其转换为 None
.
另一方面,您不实例化 ActorRef
,您通过以下方式获取这些引用:
- 从消息中获取。
- 创建新演员。
- 使用本地引用,例如
self
因此,例如,您可以根据选项值创建或不创建演员:
val maybeActorRef = maybeVar.map(x => system.actorOf(Props(new ActorWithArgs(x))))
如果想把变量的值作为布尔标志,可以将上面的代码改成:
val maybeActorRef = maybeVar.filter(_ == "true").map(x => system.actorOf(Props(new ActorWithArgs(x))))
甚至:
val maybeActorRef = maybeVar.collect {
case "true" =>
system.actorOf(Props(new Actor()))
}