将 Either 列表中的值映射到列表
Mapping values from a List of Either to List
我有两个列表,一个是:
val l1 = List[Either[A,B]]
和
val l2 = List[String]
现在,我需要做的就是映射这两个。即,如果 l1
是 A,则 return 来自 l2
的对应值。试过类似的东西:
for {
elem1 <- l1
elem2 <- l2
result <- if(elem1.isLeft) url
} yield result
这行不通。因为,我不是在处理 else
案例。与匹配而不是 if
类似。我该如何实现这一目标?
你可以这样做(我假设 l2
至少有与 l1
中的 Left
s 相同数量的 A
类型的元素) :
val result: List[String] = l1.zip(l2).filter(_._1.isLeft).map(_._2)
否则,如果您更喜欢使用 for
,这也可以解决问题:
scala> for {
| e1 <- l1.zip(l2)
| if e1._1.isLeft
| } yield e1._2
我有两个列表,一个是:
val l1 = List[Either[A,B]]
和
val l2 = List[String]
现在,我需要做的就是映射这两个。即,如果 l1
是 A,则 return 来自 l2
的对应值。试过类似的东西:
for {
elem1 <- l1
elem2 <- l2
result <- if(elem1.isLeft) url
} yield result
这行不通。因为,我不是在处理 else
案例。与匹配而不是 if
类似。我该如何实现这一目标?
你可以这样做(我假设 l2
至少有与 l1
中的 Left
s 相同数量的 A
类型的元素) :
val result: List[String] = l1.zip(l2).filter(_._1.isLeft).map(_._2)
否则,如果您更喜欢使用 for
,这也可以解决问题:
scala> for {
| e1 <- l1.zip(l2)
| if e1._1.isLeft
| } yield e1._2