gpt4 book ai didi

scala - 猫 : how to find the specific type from implicits

转载 作者:行者123 更新时间:2023-12-01 08:51:14 27 4
gpt4 key购买 nike

我有这段代码可以编译并且工作正常

import cats.implicits._
Cartesian[ValidResponse].product(
getName(map).toValidated,
readAge(map).toValidated
).map(User.tupled)

但是我不喜欢 cats.implicits._ 的导入因为那里的类(class)太多了。我尝试导入与笛卡尔函数相关的特定内容,例如
import cats.implicits.catsSyntaxCartesian
import cats.implicits.catsSyntaxUCartesian
import cats.implicits.catsSyntaxTuple2Cartesian

但这些都不起作用。作为一个新手,我发现隐式导入非常令人困惑,因为它们只有 1000 个并且名称不是很明显。我唯一的选择是通过 import cats.implicits._ 导入整个 Universe并停止思考它。

事实上,我对 cats.implicits 有更广泛的困惑。 , cats.instances._cats.syntax._ .到目前为止,我只是通过反复试验导入这些。我不确定何时导入什么。

最佳答案

不要试图从 cats.implicits 中挑出具体的东西.您要么导入整个内容,要么根本不使用它。此外,没有理由害怕全部导入。它不能干涉任何事情。

好吧,我撒谎了。如果你导入 cats.instances.<x>._ 会干扰和/或 cats.syntax.<x>._旁边 cats.implicits._ .这些组是相互排斥的:您要么导入所有内容,然后使用 cats.implicits._ 忘记它。 ,或者您专门选择要使用 cats.instances 导入的内容和 cats.syntax .

这两个包并不意味着像 cats.implicits 那样完全导入.相反,they include a bunch of objects .每个对象都包含一些隐式实例/语法,您应该从中导入。

import cats.implicits._ // Good, nothing to fear
// RESET IMPORTS
import cats.implicits.catsSyntaxCartesian // Bad, don't pick and choose
// RESET IMPORTS
import cats.instances._ // Bad, is useless
import cats.syntax._ // Ditto
// RESET IMPORTS
import cats.instances.list._ // ok
import cats.syntax.cartesian._ // ok
// RESET IMPORTS
import cats.implicits._
import cats.syntax.monad._ // Bad, don't mix these two

另外每个 cats.{ instances, syntax }包含 all对象,具有明显的功能。进口 cats.implicits._真的是 import cats.syntax.all._, cats.instances.all._的捷径.

关于scala - 猫 : how to find the specific type from implicits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412040/

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