scala - 更好的单子(monad)来解决元组脱糖失败的问题

标签 scala plugins sbt

我正在尝试合并 better monadic for进入一个项目,因为它是可爱的元组脱糖,但目前似乎不起作用。我有:

  • 在我的 plugins.sbt 中添加了该插件:addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1") .
  • 我已将我的 scala 版本从 2.13.2 降级至2.13.1
  • 我已按如下方式更新了我的代码,以利用如下的脱糖功能

我有一个具有以下签名的辅助方法:

def helper(shifts: List[Shift], taskMap: Map[String, Double]): F[(Int, Int)]

它的调用方式如下: (offProd, prod) <- helper(shifts, taskMap)

没有脱糖,它编译得很好。

我正在使用 sbt 版本 1.5.8我已经在 Metals 中重新编译并重新加载了该项目,以确保包含编译器插件。此时我唯一能想到的是插件可能没有在我的 build.sbt 中自动拾取,因为我还没有更新它以使用 plugins.sbt因为我假设 sbt 会为你做到这一点。

最佳答案

事实证明我没有通过 plugins.sbt 将插件导入到我的项目中。如luis (即G.O.A.T.)在评论中指出,better-monadic-for是一个编译器插件而不是 sbt 插件,必须添加到您的 build.sbt .

我将插件添加到我的 build.sbt 中的库依赖项中相反,工作:

compilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1")

(例如)

libraryDependencies ++= Seq(
  "io.circe" %% "circe-core" % "0.14.1",
  //... more typelevel libraries here
  compilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1"),
)

关于scala - 更好的单子(monad)来解决元组脱糖失败的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75297972/

相关文章:

javascript - 为什么 Scala 需要 def 语句?

scala - 什么是 Spark 中的 DecisionTree.trainClassifier 参数

Scala:IntelliJ 以红色突出显示正确的代码

scala - 如何使 sbt 便携?

scala - 使用 Scala 以毫秒为单位的 Spark 2.0 时间戳差异

scala - 后台作业服务,如何确保每个集群的作业只定期运行一次

c++ - Linux 系统的有限插件架构?

python - 如何将事件添加到跟踪事件时间线

c# - 从 GAC 列出所有实现特定接口(interface)的 DLL

java - 使 sbt 重新编译受影响的 Java 源代码