在play框架模板中使用getOrElse

时间:2014-03-25 15:47:24

标签: playframework-2.0 playframework-2.2

我的play 2模板中有一个Option [Product]。

在产品上定义的是价格'。

如何首先检查选项是否为某些(p)然后访问价格

@myproduct.price  // <- This obviously fails because myproduct is an Option[Product]

@myproduct.getOrElse("not found").price  // <- this does not work because price is not defined on the getOrElse.

我可以使用凌乱的匹配/案例陈述,但宁愿内联。无论如何这有可能吗?感谢

1 个答案:

答案 0 :(得分:2)

您使用getOrElse错误。您传递给getOrElse的值也应该是Product类型,应用price就像您之前那样。

解决方案是创建一个默认Product,只要您使用getOrElse,就会传递。{/ p>

更好的解决方案是使用map,例如:

@myproduct.map { actualProduct =>
    actualProduct.price
}

仅当Option不是None时才想要对案例类执行某些操作时,通常会使用此选项。