【发布时间】:2013-12-07 13:14:03
【问题描述】:
如何获取匹配情况下的默认值?
//Just an example, this value is usually not known
val something: String = "value"
something match {
case "val" => "default"
case _ => smth(_) //need to reference the value here - doesn't work
}
更新:我发现我的问题没有被真正理解,这就是为什么我要展示一个更接近我正在研究的真实事物的示例:
val db = current.configuration.getList("instance").get.unwrapped()
.map(f => f.asInstanceOf[java.util.HashMap[String, String]].toMap)
.find(el => el("url").contains(referer))
.getOrElse(Map("config" -> ""))
.get("config").get match {
case "" => current.configuration.getString("database").getOrElse("defaultDatabase")
case _ => doSomethingWithDefault(_)
}
【问题讨论】:
-
不确定,你是说这可能吗?
case _ => smth(something) -
val config = current.configuration.getList("instance").get.unwrapped() .map(f => f.asInstanceOf[java.util.HashMap[String, String]].toMap) .find(el => el("url").contains(referer)) .getOrElse(Map("config" -> "")) .get("config").get然后config match .... -
不,不是……我会试着从 Martin Odersky 那里得到他特别指出的演讲:“不要做一个班轮”:-)
-
@Caballero 不一定,可读性获胜,总是 =)
-
我们开始了,youtube.com/watch?v=kkTFx3-duc8,从第 15 分钟开始“不要包装太多作为表达”。
标签: scala