2017-10-26 11 views
0
val date2 = Option(LocalDate.parse("2017-02-01")) 
case class dummy(val prop:Seq[Test]) 
case class Test(val s :String,val dt:String) 
case class Result(val s :String) 

def myFunc:Result = { 
    val s = "11,22,33" 
    val t = Test(s,"2017-02-06") 
    val list = dummy(Seq(t)) 
    val code = Option("22") 
    val result = code.exists(p => { 
    list.prop.exists(d => d.s.split(",").contains(p) && (LocalDate.parse(d.dt).compareTo(date2.get)>=0)) 
    }) 

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

コードは条件に基づいて結果を決定します。 マップを使ってScalaで上記を達成するための効率的な方法がありますし、あなたはパターンマッチングを確認する必要がありますdate2.get結果を比較し、カスタムオブジェクトをスカラーで効率的に送信する

答えて

1

を避け、私の知る限り、あなたはいくつかの例があります。 - コード - リスト - 日付2

あなたはマップを使用する理由も、私は知らない

(code, list, date2) match { 
     case (Some(p), dummy(l), Some(d2)) if l.exists(d => d.s.split(",").contains(p) && (LocalDate.parse(d.dt).compareTo(d2) >= 0)) => Result("found") 
     case (_, _, _) => Result("Not Found") 
    } 

:date2.getを回避するために

一つの方法はbelowsのこの一つです。これはこの仕事のための適切なツールではないようです。

+0

私の質問を確認してください。https://stackoverflow.com/questions/46955499/combine-condition-inside-flat-map-and-return-result – coder25

関連する問題