例如,我想将函数f: (Int,Int) => Int
应用于Option[Int]
类型的两个元素。我的想法类似于(a,b).zipped.map(F),但这会产生一个列表,我希望得到一个新的选项[Int]作为结果。
scala> def f(a:Int,b:Int) = a*b
f: (a: Int, b: Int)Int
scala> val x = Some(42)
x: Some[Int] = Some(42)
scala> val y:Option[Int] = None
y: Option[Int] = None
scala> (x,y).zipped.map(f)//I want None as a result here
res7: Iterable[Int] = List()
没有明确的分支,如何才能做到这一点呢?
3条答案
按热度按时间xfb7svmp1#
就像Scala中的许多其他操作一样,这可以通过for complect来完成:
llew8vvj2#
与这类问题的常见情况一样,scalaz有一些帮助:
yyhrrdl83#
使用om-nom-nom的想法,我可以这样做:
我们甚至可以概括这一点……请遮住眼睛: