字符串不为空时,Scala选项变量将重写

字符串不为空时,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

我有两个选项变量,当第一个变量为无或空字符串时,我想将第二个变量分配给第一个变量。有没有更好的写作方法?我需要对一个类中的10个其他类似属性执行这些操作

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)