首页 > 解决方案 > Simulacrum:找不到宏实现

问题描述

我在 Scala 中有一个简单的代码来尝试 simulacrum lib:

import simulacrum._
@typeclass trait Semigroup[A] {
  @op("|+|") def append(x: A, y: A): A
}

但这不起作用。编译器说

错误:(3, 2) 未找到宏实现:macroTransform(最常见的原因是您不能在定义它们的同一编译运行中使用宏实现)@typeclass trait Semigroup[A] {

什么会导致此错误?我不创建宏,我只是重用现有的宏。

我的 build.sbt 文件很简单:

name := "Macr"
version := "0.1"
scalaVersion := "2.12.5"
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
libraryDependencies += "com.github.mpilquist" %% "simulacrum" % "0.12.0"

标签: scalatypeclasssimulacrum

解决方案


正如Oleg Pyzhcov在评论中指出的那样,在 Java 9 或 10 上编译时,宏不适用于 Scala 2.12.4 和 2.12.5。但是,这已在 Scala 2.12.6 中修复,因此升级应该可以解决问题。


推荐阅读