在 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 nullOption.apply 将其转换为 None.

另一方面,您不实例化 ActorRef,您通过以下方式获取这些引用:

  1. 从消息中获取。
  2. 创建新演员。
  3. 使用本地引用,例如 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()))
}