gpt4 book ai didi

Scala,猫, `ap` 的用法

转载 作者:行者123 更新时间:2023-12-02 02:32:32 27 4
gpt4 key购买 nike

我正在经历https://www.scala-exercises.org/对于猫来说。我想我明白Apply.ap 是什么意思。但我看不到它有任何用途。

有什么区别:

Apply[Option].map(Some(1))(intToString)

Apply[Option].ap(Some(intToString))(Some(1))

有人可以解释一下或者给我更多的解释吗?

最佳答案

没有区别

Apply[Option].map(Some(1))(intToString)

Apply[Option].ap(Some(intToString))(Some(1))

两者都是Some("1")

但是mapap之间有很大的区别。

map 来自类型类 Functor 并具有签名

def map[A, B](fa: F[A])(f: A => B): F[B]

ap 来自类型类 Apply 并具有签名

def ap[A, B](ff: F[A => B])(fa: F[A]): F[B]

因此,map函数 A => B 应用于上下文中的值F[A] while ap 将上下文中的函数 F[A => B] 应用到上下文中的值F[A]

例如

Apply[List].map(List(1, 2))(intToString)

List("1", "2") while

Apply[List].ap(List(intToString, (i: Int) => intToString(i) + "a"))(List(1, 2))

List("1", "2", "1a", "2a")

仅当 fxNone 时,

Apply[Option].map(fx)(f) 才可以为 None > 而当 fxNone 时,Apply[Option].ap(ff)(fx) 可以为 Noneff

关于Scala,猫, `ap` 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64822763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com