2015-08-25 3 views
1

У меня есть две переменные параметра и я хочу назначить второй для 1-го, когда 1-й - ни один или пустой. Есть ли лучший способ написать это? Мне нужно сделать это для 10 других подобных свойств в классе.Опция переменной Scala переопределяет, когда строка не пуста

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 

ответ

3

Если вы не заботитесь, которые пустая строка из 2 закончится в myoption1, если оба они пусты, то я предлагаю следующее:

myoption1 = myoption1.filter(_.nonEmpty).orElse(myoption2) 
+0

Scala уже определяет 'nonEmpty' на струнах – dwickern

+0

Я знаю, просто подумал, что StringUtils.isEmpty может содержать различную логику в отношении обрезки или что-то еще. Ред. – Tyth

+0

не должен быть 'filterNot'? –

Смежные вопросы