2017-10-17 76 views
-1
case class dummy(val prop:Seq[Test]) 
case class Test(val s :String) 
case class Result(val s :String) 

def myFunc:Result = { 
    val s = "11,22,33" 
    val t = Test(s) 
    val list = dummy(Seq(t)) 
    val code = Option("25") 
    val result = code.exists(p => { 
    list.prop.exists(d => d.s.split(",").contains(p)) 
    }) 

    if (result) { 
    Result("found") 
    } else { 
    Result("Not Found") 
    } 
} 

我正在調用函數myFunc,而不是使用if/else構造計算布爾值。檢查序列中是否存在值的可能方法scala

任何可能的方法來避免使用if else結構

回答

0

沒有什麼錯用if/else,但你可以這樣做:

code 
    .flatMap(c => list.prop.find(_.s.split(",").contains(c))) 
    .map(_ => Result("Found")).getOrElse(Result("Not Found")) 

這裏的想法是,而不是返回Boolean在我們每個階段都沿着Option傳遞。然後最後,如果定義了Option,我們可以將其映射到Result("Found"),如果未定義,則.getOrElse將返回Result("Not Found")