我有一个我想解除的功能2:
def myFunction(a: String, b: String): String
我想用签名
获得该功能def myFunction2(a: Option[String], b: Option[String]: Option[String]
如果任何参数为None
,则应返回None
。在Scalaz中,该案例有Applicative.lift2
,但我找不到cats
的相同内容。
我如何对cats
做同样的事情?那么lift3
,......?
答案 0 :(得分:2)
您要找的是Apply.ap2
。以下是使用Apply.ap2
实现的示例。
import cats.implicits._
def myFunction(a: String, b: String): String =
a + b
def myFunction2(a: Option[String], b: Option[String]): Option[String] =
Apply[Option].ap2(Some(myFunction _))(a, b)
assert(myFunction("a", "b") === "ab")
assert(myFunction2(Some("a"), Some("b")) === Some("ab"))
assert(myFunction2(Some("a"), None) === None)
您还有ap
个函数用于更多参数(在ApplyArityFunctions
中定义),最多为ap22
。