如何在不显式指定的情况下调用 Cats 类型类方法?

问题描述 投票:0回答:1

我想编写该代码:

IO.foreverM:
  IO.sleep(1.seconds) *> IO.println("Tick")

但它无法编译。然而这段代码可以编译:

FlatMap[IO].foreverM:
  IO.sleep(1.seconds) *> IO.println("Tick")

第一个代码可以以某种方式编译吗?

scala scala-cats cats-effect
1个回答
0
投票

IO
对象不包含它支持的每个类型类操作的别名。没有提供
IO.foreverM
的导入,尽管您当然可以编写一个,并且出于这个原因,有人建议将所有此类方法添加到
IO
对象。

一般来说,您看到的使用 cats 的大多数代码更喜欢在实例上使用类型类方法,而不是通过伴生对象。就像路易斯在评论中建议的那样,

(IO.sleep(1.seconds) *> IO.println("Tick")).foreverM

© www.soinside.com 2019 - 2024. All rights reserved.