【发布时间】:2015-02-02 16:43:38
【问题描述】:
我希望节点 test1、test2 和 test3 仅在定义 option 时出现。
下面的代码有效,但是,我不喜欢 test1,因为它不使用模式匹配(所以我需要调用 option.get);我不喜欢 test2,因为我有一条无用的行 case _ =>。而且我不喜欢 test3,因为我有等效的 .getOrElse(())。有没有很好的方法来实现这一点?
val option: Option[Int] = None
val node =
<test>
{ if (option.isDefined) <test1>{option.get}</test1> }
{ option match {
case Some(x) => <test2>{x}</test2>
case _ =>
}}
{ option.map(x => <test3>{x}</test3>).getOrElse(()) }
</test>
【问题讨论】: