2016-04-11 16 views
0

İçinde desen eşlemesini kullandığım bir kod parçam var, her durumda haritayı kullandım, haritanın bir değişkene verdiği çıktıyı elde etmek istiyorum. Aşağıda benim kodudur: çantasının içinde harita deyimi hemMaç ifadesinin çıktısını değişkene nasıl kaydederim?

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) 
     } 
    ) 
} 

çıkış Liste edilir [Seçenek [Öğrenci]], i tek bir nesne beri Bu listeyi dönüştürmek istiyorum, çünkü değişken içine bu almak için bir yol var HystrixCommand yürütme çıkışı, çıktı olarak Listeyi desteklemiyor. Ben StudentListing dönüştürmek istiyorum (val liste: Liste [Opsiyon [Öğrenci]])

cevap

0

sadece ... bir değer/değişkene atayın:

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

bir maç ifadesi, diğerleri gibi Scala'daki ifade, bir değer olarak değerlendirilir - bu değerle istediğinizi yapabilirsiniz. Hata:

+0

bu hatayı alıyorum (44, 3) basit anlatım val sonucun yasadışı start = StudentDataCache.get (soyadı) maç { ^ – user1079341

+1

Eklemek mü '{' sonunda önceki satır, bunu tek satır yerine "run" in çok satırlı uygulamasına dönüştürmek için mi? Ayrıca bakınız: http://stackoverflow.com/questions/15962563/illegal-start-of-simple-expression-in-scala –

+0

Anladım ... şimdi çalışıyor :) Teşekkürler – user1079341

İlgili konular