2016-04-11 17 views
0

私はマップの中にパターンマッチングを使用していますが、すべての場合にマップを使用しています。地図が変数に与える出力を取得したいのです。以下は私のコードです:ケース内のマップステートメントの両方のmatchステートメントの出力を変数に保存する方法は?

override def run():List[Option[Student]] = 
StudentDataCache.get(surname) match { 
    case Some(i) => i.otherSiblings.map(siblings => 
    StudentDataCache.get(siblings) match { 
     case Some(i) => Some(i) 
     case None=> getStudentFromDatabase(siblings) 
    } 
) 
    case None => 
    getStudentFromDatabase(surname).get.otherSiblings.map(siblings => StudentDataCache.get(siblings) match { 
     case Some(i) => Some(i) 
     case None=> getStudentFromDatabase(siblings) 
     } 
    ) 
} 

出力がリストされる[オプション[学生]]、私は単一のオブジェクト以降にこのリストを変換するための変数にこれを取得する方法がありますHystrixCommandの実行出力は、Listを出力としてサポートしていません。私はStudentListingに変換したい(ヴァル・リスト:リスト[オプション[学生]])

答えて

0

だけ...値/変数に代入:

override def run(): StudentListing = { 
    val result = StudentDataCache.get(surname) match { /* same code*/ } 
    StudentListing(result) // or however you wrap it into a StudentListing... 
} 

一致式、他のどのようなScalaの式は値として評価されます。この値を使用して任意の操作を行うことができます。

+0

私はこのエラーを取得しています: エラー:(44、3)簡単な式の違法開始 valの結果= StudentDataCache.get(姓)が一致{ ^ – user1079341

+1

あなたはの終わりに '' {を追加しましたこれを1行の代わりに 'run'の複数行の実装にするには?こちらも参照してください:http://stackoverflow.com/questions/15962563/illegal-start-of-simple-expression-in-scala –

+0

これを取得しました。今すぐ働いています:) ありがとう – user1079341

関連する問題