字符串不为空时,Scala选项变量将重写
我有两个选项变量,当第一个变量为无或空字符串时,我想将第二个变量分配给第一个变量。有没有更好的写作方法?我需要对一个类中的10个其他类似属性执行这些操作字符串不为空时,Scala选项变量将重写,scala,optional,Scala,Optional,我有两个选项变量,当第一个变量为无或空字符串时,我想将第二个变量分配给第一个变量。有没有更好的写作方法?我需要对一个类中的10个其他类似属性执行这些操作 var myoption1: Option[String] var myoption2: Option[String] import org.apache.commons.lang3.StringUtils implicit class Addons(val s: String) { def isEmptyS = StringUt
var myoption1: Option[String]
var myoption2: Option[String]
import org.apache.commons.lang3.StringUtils
implicit class Addons(val s: String) {
def isEmptyS = StringUtils.isEmpty(s)
def isNotEmpty = StringUtils.isNotEmpty(s)
}
if (myoption1.map(_.isEmpty).getOrElse(true) &&
myoption2.map(_.isNotEmpty).getOrElse(false)
) myoption1 = myoption2
如果您不关心2个空字符串中的哪一个将在
myoption1
中结束,如果它们都是空的,那么我建议:
myoption1 = myoption1.filter(_.nonEmpty).orElse(myoption2)
我知道,我只是认为StringUtils.isEmpty可以包含关于修剪或其他方面的不同逻辑。已编辑。它不应该是
filterNot
?@VictorMoroz问题是当第一个是无或空字符串时,将第二个分配给第一个。@angelokh我问的时候它是myoption1.filter(u.isEmpty)