如何迭代 List[Result] 和 return 一个 Boolean/Result?
How To iterate List[Result] and return one Boolean/Result?
我有一个Future[List[Result]]
我需要 运行 一个逻辑,例如如果列表中的所有项目都是 Result.Ok
那么 return Result.Ok
(或 true),否则 return Result.BadRequest
(或假)
我试过:
futureResultList.map(temp => temp.forall(_ == true))
但此代码仅在列表包含布尔值时有效。如果它包含 Result
个对象,则它不起作用(更改时检查 to _ == Result.Ok
)
要return一个Boolean
你只需要改变forall
调用中的谓词:
futureResultList.map(_.forall(_ == Result.Ok))
概述此类示例的最简单方法是映射。如果您有一个结果列表,但需要一个布尔值列表,请映射它。不要害怕映射多次,它在长 运行 :)
中更具可读性
val futureResultList: Future[List[Result]] = ???
val futureBooleanList: Future[List[Boolean]] = futureResultList.map(_.map(_ == Result.OK))
val result = futureBooleanList.map(temp => temp.forall(_ == true))
或者稍微简洁一点:
val futureResultList: Future[List[Result]] = ???
val result = futureResultList.map(_.map(_ == Result.OK)
.forall(_ == true))
当然,正如其他人所建议的那样,直接检查 Result 对象的相等性。但是映射对于在类型之间导航以及获得更清晰、更易读的代码通常很有用。
我有一个Future[List[Result]]
我需要 运行 一个逻辑,例如如果列表中的所有项目都是 Result.Ok
那么 return Result.Ok
(或 true),否则 return Result.BadRequest
(或假)
我试过:
futureResultList.map(temp => temp.forall(_ == true))
但此代码仅在列表包含布尔值时有效。如果它包含 Result
个对象,则它不起作用(更改时检查 to _ == Result.Ok
)
要return一个Boolean
你只需要改变forall
调用中的谓词:
futureResultList.map(_.forall(_ == Result.Ok))
概述此类示例的最简单方法是映射。如果您有一个结果列表,但需要一个布尔值列表,请映射它。不要害怕映射多次,它在长 运行 :)
中更具可读性val futureResultList: Future[List[Result]] = ???
val futureBooleanList: Future[List[Boolean]] = futureResultList.map(_.map(_ == Result.OK))
val result = futureBooleanList.map(temp => temp.forall(_ == true))
或者稍微简洁一点:
val futureResultList: Future[List[Result]] = ???
val result = futureResultList.map(_.map(_ == Result.OK)
.forall(_ == true))
当然,正如其他人所建议的那样,直接检查 Result 对象的相等性。但是映射对于在类型之间导航以及获得更清晰、更易读的代码通常很有用。