从写作惯用代码,高效代码等角度来判断它.
我有以下定义的多种方式从getConf1,getConf2或getConf3获取conf值,无论哪个成功产生一个值,当按该顺序调用时.换句话说,如果getConf1产生一个值,我们将跳过剩下的两个.如果getConf1没有产生值,那么我们将尝试getConf2,依此类推.
def getConf1(name: String): Option[String]
def getConf2(name: String): Option[String]
def getConf3(name: String): Option[String]
Run Code Online (Sandbox Code Playgroud)
方法1:
def getSetting(name: String): Option[String] = {
var r = getConf1(name)
if(!r.isDefined) {
r = getConf2(name)
}
if(!r.isDefined) {
r getConf3(name)
}
r
}
Run Code Online (Sandbox Code Playgroud)
方法2:
def getSetting(name: String): Option[String] = {
val val1 = getConf1(name)
val val2 = getConf2(name)
val val3 = getConf3(name)
(val1, val2, val3) match {
case (a: Some[String], _, _) => a
case (_, a: Some[String], _) => a
case (_, _, a: …Run Code Online (Sandbox Code Playgroud) scala ×1