scala - 宏注释生成的伴随类的应用方法未解析
问题描述
我编写了一个宏注释处理器,它生成所有与声明案例类相同的方法,但提供散列约束。这有点棘手,但总的来说我对结果非常满意。但是,我看到围绕apply
我尚未解决的方法的一些行为。
以前,当一个类Foo
是案例类或具有手动定义的apply
方法时,我可以编写类似foos.map(Foo)
. 但是,现在该方法是由宏处理器生成的,它会报错如下所示
type mismatch;
[error] found : Foo.type
[error] required: String => ?
现在我可以将代码重写为foos.map(Foo.apply)
orfoos.map(Foo(_))
并且它会工作,但我无法辨别我生成的代码中会导致这种行为差异的任何差异。
我怀疑这是因为 Scala 编译器过于急切地将符号解析为类型名称而不是对象名称或类似名称,但如果有一种方法可以在这里做得更好,那就太好了。
解决方案
正如@LuisMiguelMejíaSuárez 和@DmytroMitin 所指出的,我的严重疏忽是(大多数)案例类伴随对象继承自一个FunctionN
类。将其添加到新的或现有的伴随对象的父对象可以解决问题。
推荐阅读
- android - EditText 没有关注带有 NestedScrollView 的 CoordinatorLayout
- javascript - 创建两个共同依赖
- java - 嵌套表 docx4j
- wordpress - 离子不从 url wp-json 和 ionic4 加载图像
- r - 我经常收到关于 opt() 函数在哪个包中的错误?我该如何处理?
- git - 我将一个提交合并到 master 中,现在收到一条关于挑选樱桃的消息。不胜感激建议什么是安全的
- jquery - jQuery替换方法不会用新值更新旧值
- java - Java SQL Prepared Statement 问题与数组和 Where... IN 列表
- spring - 如何获取名称存储在变量中的方法返回的值
- c++ - 如何在不改变平移方向的情况下在旋转后应用平移?