gpt4 book ai didi

找不到 Scala : value macro

转载 作者:行者123 更新时间:2023-12-02 10:54:20 24 4
gpt4 key购买 nike

这一行:

"foo".assertNonFatal( _ equals "foo", "error message");

这个错误:
Error:(120, 47) not found: value assertion

这个钩子(Hook):
final implicit class ImplicitAssert[MyType](val me: MyType) {

final def assertNonFatal(assertion: (MyType) => Boolean, message: String)
: MyType = macro ImplicitAssertMacros.assertNonFatal[MyType]
}

这个宏:
object ImplicitAssertMacros {
def assertNonFatal[MyType](c: scala.reflect.macros.blackbox.Context)
(assertion: c.Tree, message: c.Tree): c.Tree = {
import c.universe._
val me = q"${c.prefix}.me" // "me" from ImplicitAssert class.
val numLines = q"Int.MaxValue"
val useStdOut = q"false"
val assertionTrue = q"assertion($me)"
val isFatal = q"false"
val toReturn = q"""
_root_.info.collaboration_station.debug.internal.Printer.traceInternalAssert($message, $numLines, $useStdOut, $assertionTrue, $isFatal);
$me;
"""
toReturn
}
}

^ 我无法弄清楚这个编译器错误的原因是什么或如何修复它。

请注意,它仅在我编译源文件时发生,而不是宏。

最佳答案

它通过改变来工作:

val assertionTrue = q"$assertion($me)"

def 宏在调用站点扩展,这里不再有任何断言参数。

关于找不到 Scala : value macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634787/

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