gpt4 book ai didi

scala - 如何键入检查 Def Def

转载 作者:行者123 更新时间:2023-12-01 03:51:25 29 4
gpt4 key购买 nike

在注释宏中,我枚举了一个类的成员,并且想要找到我找到的方法的类型。

所以我很高兴地遍历 body类的,并收集所有DefDef成员。

...我无法进行类型检查。

对于每个 DefDef我尝试将其包装在 Expr 中并使用 actualType .我试过复制这个东西并将它移植到一个临时类中(通过准引号)。我已经尝试了我能想到的所有其他方法:)

我能得到的最好的结果是NoTypeAny ,取决于使用的技术。我得到的最糟糕的是向我抛出异常。

这些是简单的方法,形式为 def foo(i: String) = i ,因此需要推断返回类型,但不需要外部信息。这里没有抽象类型、类型参数或类的其他成员。我想稍后处理更高级的案例,但希望先让这些琐碎的例子工作。

在插件中,这很简单。我只需对已抑制错误的整个单元进行类型检查,并通过符号获得我想要的内容,然后重置树属性以进行后续处理。作为一个宏......我很难过。

我错过了什么?

最佳答案

在宏中也是一样的。而不是 typed与插件一样,您调用 c.typeCheck ,但必须小心不要落入应该在 2.10.5 和 2.11.0 中修复的陷阱 (https://github.com/scalamacros/paradise/issues/1)。从 c.typeCheck 成功返回后,您可以访问该符号并执行所有常规操作。

关于scala - 如何键入检查 Def Def,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363542/

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