如何翻转/翻转/反转/交换Scala的选项?

5
假设你有一个 Option[A] 需要将其转换为
Some(b : B),如果为 None
并且转换为
None 如果是 Some(a : A)

是否已经有现成的代码可以实现这个功能?我可以写一些代码,但最简单的方法是什么?

1个回答

4
最简单的方法是:
val b : B = new B()
val newA: Option[B] = a.fold(Some(b))(_ => None)

b should be a plain value and do Some(b) on the fold` - Luis Miguel Mejía Suárez
1
def f[A, B](s: Option[A], b: B) = s.fold(Some(b) : Option[B])(_ => None) - galva
2
@galva: s.fold(Option(b))(_ => None) 赢了。 - pedrofurla
1
我们可以在这里使用'match',并根据值和类型生成新值吗? - Joseph Biju Cadavil
当前状态下的答案是错误的。它无法编译,因为fold的第二个参数列表期望一个从A => B的函数而不是一个普通值。您应该根据@pedrofurla的评论更新答案。 - haukeh
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接