scala - 如何在 scala.meta quasiquotes 中使自定义类型可提升
问题描述
我有以下代码,其中 x 是自定义类型的实例。该代码是从一个更大的项目中提取的最小代码。
import scala.meta._
object Testing {
def main(args: Array[String]): Unit = {
x = CustomInt(6, "Some extra data")
if (q"$x > 5") {
println("hello")
}
}
在另一个文件中我有
import scala.reflect.runtime.universe._
case class CustomInt(val value: Int, val extra: String) {
... overloaded arithmetic operators
}
object CustomInt {
implicit def lift = Liftable[CustomInt] { i =>
q"_root_.customprimitives.CustomInt(${i.value}, ${i.extra})"
}
Scala 在 if 语句中给了我以下错误:
type mismatch when unquoting;
found : customprimitives.CustomInt
required: scala.meta.Term
我相信这个问题与使用 scala.meta.quasiquotes 而不是来自 scala.reflect 的问题有关。如果我尝试在 CustomInt 文件中使用 scala.meta,我会在提升函数上出现错误,因为 scala meta 没有它。
如何使我的 CustomInt 类在 scala.meta quasiquotes 中可提升?
解决方案
推荐阅读
- python - 如何使用python删除json文件中的特定字段
- angularjs - 有没有办法在 Angular Js 自定义指令中添加“uib-tooltip-html”作为属性?
- babylonjs - bayblonjs:babylon.js 中是否有方法/函数可以找到最短(最佳)路径
- android - 如何在 Android 11 中创建目录
- angular - 自定义 Angular 库在 Web 应用程序中引发 NullInjector 错误
- python - 交叉验证错误 DataConversionWarning:当需要一维数组时,传递了列向量 y
- flutter - GestureDetector ontap 不起作用,但 ondouble tap 起作用。扑
- java - Log4J2 - 只写入日志文件而不是控制台
- sql - 两列之间存在差异的 WHERE 子句
- visual-studio - “System.NullReferenceException”类型的第一次机会异常