在 Scala 3 控制台(或 Scastie)中,运行以下代码时:
import scala.quoted._
val a = Expr("Hello")
以下错误结果:
-- Error: ----------------------------------------------------------------------
1 |val a = Expr("Hello")
| ^
|No given instance of type quoted.Quotes was found for parameter x$3 of method apply in object Expr
1 error found
在控制台中使用宏是否需要执行额外的步骤?
最佳答案
事实证明我误解了引用机制。在控制台中运行的最小示例的上下文中,引用应该在返回之前进行拼接:
import scala.quoted.*
def getQuote()(using Quotes) = '{ "a quote" }
inline def getSplice() = ${ getQuote() }
然后可以从控制台评估拼接的报价:
getSplice() // returns "a quote"
但是,无法直接计算引用,从而导致前面的错误:
getQuote() // errors out
关于scala - 如何在Scala控制台中使用宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76316882/