【发布时间】:2019-07-27 23:37:16
【问题描述】:
我正在使用 Cats 库。在 Scala 中,代码如下所示:
import cats.Semigroupal
import cats.instances.option._
val r = Semigroupal.tuple2(Option(1), Option(2))
tuple2 定义为:
def tuple2[F[_], A0, A1](f0:F[A0], f1:F[A1])(implicit semigroupal: Semigroupal[F], invariant: Invariant[F]):F[(A0, A1)]
以下隐式值实际上以 Semigroupal 和 Invariant 的形式传递(通过 Intellij IDEA Scala 插件检查):
package cats
package instances
trait OptionInstances ...
implicit val catsStdInstancesForOption: ...
如何在Java代码中的tuple2函数中传递catsStdInstancesForOption?
Semigroupal$.MODULE$.tuple2(
Option.apply(1), Option.apply(2),
...,// and here?
... //here
);
依赖于 Cats 库(如果需要):
<cats.core.version>1.5.0</cats.core.version>
...
<!-- https://mvnrepository.com/artifact/org.typelevel/cats-core -->
<dependency>
<groupId>org.typelevel</groupId>
<artifactId>cats-core_2.12</artifactId>
<version>${cats.core.version}</version>
</dependency>
【问题讨论】:
-
也许您应该提供一个用 Scala 编写的对 Java 更友好的包装方法(可能专门针对您需要的类型)并调用它。
-
@Thilo,我可以。但我想知道,为什么我不能在 Java 中使用catsStdInstancesForOption。我在猫中有数百个具有隐式值的方法,为所有方法编写包装器是无效的。
标签: java scala implicit scala-cats scala-java-interop