scala - 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"
解决方案
正如Oleg Pyzhcov在评论中指出的那样,在 Java 9 或 10 上编译时,宏不适用于 Scala 2.12.4 和 2.12.5。但是,这已在 Scala 2.12.6 中修复,因此升级应该可以解决问题。
推荐阅读
- javascript - 如何阻止 div 在函数的特定点接受任何输入
- python - 如果一列与数据集中的另一列重叠怎么办?
- api - 从 WSO2 存储调用 API 导致“101500 - 发件人错误”
- git - 如何计算 Git 存储库中按特定作者分组的一年中更改的总行数?
- jquery - 为什么我的 Fullcalendar clientEvent 在由 jquery click 事件触发时只触发一次
- c# - 如何在 c# 驱动程序中为 mongo 集合中的所有文本字段创建全文搜索?
- c++ - 计算item相似度矩阵遇到的问题
- angular - 错误:无法绑定到“建议”,因为它不是“p-autoComplete”PRIMENG 的已知属性
- c# - 在 c# System.AccessViolationException 处导出 c++ 函数和使用函数
- dictionary - 在地图上创建气泡