【发布时间】:2023-03-03 01:31:01
【问题描述】:
我想将算术运算符 +、*、/ 传递给 Option monad。
我可以为函数 (Double,Double) => Double 像 math.pow 那样做
scala> def parseOp2(o1:Option[Double], o2:Option[Double], op: (Double,Double) => Double): Option[Double] =
| (o1,o2) match {
| case (Some(d1), Some(d2)) => Some(op(d1,d2))
| case _ => None
| }
parseOp2: (o1: Option[Double], o2: Option[Double], op: (Double, Double) => Double)Option[Double]
scala> parseOp2(Some(2),Some(3),math.pow)
res39: Option[Double] = Some(8.0)
但是这些运算符的签名是什么。我试过了
def parseOp2(o1:Option[Double], o2:Option[Double], op: Double => Double): Option[Double] =
(o1,o2) match {
case (Some(d1), Some(d2)) => Some(d1.op(d2))
case _ => None
}
【问题讨论】: