gpt4 book ai didi

scala - 在定义宏的同一个文件中使用宏有什么技巧吗?

转载 作者:行者123 更新时间:2023-12-04 12:07:07 24 4
gpt4 key购买 nike

我有以下代码:

object Macros {

import scala.language.experimental.macros
import scala.reflect.macros.blackbox

def hello(): Unit = macro hello_impl

def hello_impl(c: blackbox.Context)(): c.Expr[Unit] = {
import c.universe._
reify {
println("Hello World!")
}
}
}


object Main {

def main(args: Array[String]): Unit = {
Macros.hello()
}

}

它将引发以下编译错误:
Error:(21, 17) macro implementation not found: hello
(the most common reason for that is that you cannot use macro implementations in the same compilation run that defines them)
Macros.hello()
^

我的问题是:有没有一种方法可以“欺骗”编译器,以便在定义它们的同一文件中使用宏扩展?我的动机如下:我喜欢用Scala编写代码,最近我在在线法官 Codeforces中提交了一些问题,结果发现某些Scala的构建非常慢。因此,我想创建一些宏扩展以快速执行那些构造。但是我不能提交多个文件。

谢谢!

最佳答案

目前,这在Scala 2.10和2.11的生产版本中是不可能的。我们也许可以使用scala.meta来实现这一点,但是将来会很好。

关于scala - 在定义宏的同一个文件中使用宏有什么技巧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27919726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com