我想Future[Map[String, List[String]]]從fetchUniqueCodesForARootCode方法回傳
import scala.concurrent._
import ExecutionContext.Implicits.global
case class DiagnosisCode(rootCode: String, uniqueCode: String, description: Option[String] = None)
object Database {
private val data: List[DiagnosisCode] = List(
DiagnosisCode("A00", "A001", Some("Cholera due to Vibrio cholerae")),
DiagnosisCode("A00", "A009", Some("Cholera, unspecified")),
DiagnosisCode("A08", "A080", Some("Rotaviral enteritis")),
DiagnosisCode("A08", "A083", Some("Other viral enteritis"))
)
def getAllUniqueCodes: Future[List[String]] = Future {
Database.data.map(_.uniqueCode)
}
def fetchDiagnosisForUniqueCode(uniqueCode: String): Future[Option[DiagnosisCode]] = Future {
Database.data.find(_.uniqueCode.equalsIgnoreCase(uniqueCode))
}
}
getAllUniqueCodes 回傳資料串列中的所有唯一代碼。
fetchDiagnosisForUniqueCode 在 uniqueCode 匹配時回傳 DiagnosisCode。
從 fetchDiagnosisForUniqueCodes,我使用 getAllUniqueCodes() 和 fetchDiagnosisForUniqueCode(uniqueCode) 回傳Future[List[DiagnosisCode]]。*
def fetchDiagnosisForUniqueCodes: Future[List[DiagnosisCode]] = { val xa: Future[List[Future[DiagnosisCode]]] = Database.getAllUniqueCodes.map { (xs: List[String]) => xs.map { (uq: String) => Database.fetchDiagnosisForUniqueCode(uq) } }.map(n => n.map(y=> y.map(_.get))) } xa.flatMap { listOfFuture => Future.sequence(listOfFuture) }}
現在,
def fetchUniqueCodesForARootCode應該Future[Map[String, List[DiagnosisCode]]]使用fetchDiagnosisForUniqueCodes和回傳groupBy
這是方法
def fetchUniqueCodesForARootCode: Future[Map[String, List[String]]] = {
fetchDiagnosisForUniqueCodes.map { x =>
x.groupBy(x => (x.rootCode, x.uniqueCode))
}
}
需要從以下結果中獲得以下結果fetchUniqueCodesForARootCode:-
A00 -> List(A001, A009), H26 -> List(H26001, H26002), B15 -> List(B150, B159), H26 -> List(H26001, H26002)
uj5u.com熱心網友回復:
很難從問題描述中解碼,問題是什么。但是如果我理解正確的話,你想得到一個從rootCodes 到 s 串列的映射uniqueCode。
該groupBy方法采用一個函式,該函式為每個元素回傳其鍵。所以首先你必須按rootCodes 分組,然后你必須使用map來獲得正確的值。
groupBy定義:https ://dotty.epfl.ch/api/scala/collection/IterableOps.html#groupBy-f68
斯卡斯蒂:https ://scastie.scala-lang.org/KacperFKorban/PL1X3joNT3qNOTm6OQ3VUQ
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/508575.html
下一篇:從fetchDiagnosisForUniqueCodes方法回傳Future[List[DiagnosisCode]]
