有没有更短的方法:
val accessControlAllowOrigin = c_dash.getString("access-control-allow-origin") match {
case "" => None
case x => Some(x)
}
这是在Typesafe配置值中读取,其中空字符串表示没有这样的配置(在Typesafe配置中,它包含所有值的良好方式,不会遗漏任何内容)。
是否有类似的东西:
val sopt = Option( s, "magic" )
..如果Some(s)
的值为None
,会提供s
或"magic"
吗?
通过查看我来的doc:
scala> def f(s: String) = (Some(s) filter( _ != "magic" ))
f: (s: String)Option[String]
scala> f("aaa")
res1: Option[String] = Some(aaa)
scala> f("magic")
res2: Option[String] = None
这是最简单的吗?
答案 0 :(得分:5)
您可以使用filter
,Option
的工作方式与其他任何系列的工作方式相同:
c_dash.getString("access-control-allow-origin").filter(_.nonEmpty)
任何与filter
谓词不匹配的内容都将变为None
。
答案 1 :(得分:2)
我可能会遗漏一些明显的东西,但是如何:
val sopt = if (s == "magic") None else Some(s)
或者,对于你的f():
def f(s:String) = if (s == "magic") None else Some(s)
或更一般地说:
def noneIfDefault(s:String, default: String) = if (s == default) None else Some(s)