问题标签 [scalameta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala 宏:使用选项类型创建新类
鉴于此,我想编写一个宏:
生成以下代码:
我在这里取得了不错的进展:https ://github.com/pathikrit/metarest
通过注释干净地对字段进行分组并生成Get/Post
类的最佳方法是什么?此外,对于Patch
班级 - 我如何将所有字段转换为Option[original.type]
?
scala - Scala递归宏?
我想知道 Scala 是否支持递归宏扩展,例如我正在尝试编写一个带有镜头宏的镜头库来执行此操作:
鉴于lens(a)(_.b.c.d)(f)
,我想将其转换为a.copy(b = lens(a.b)(_.c.d)(f))
编辑: 我在这里取得了一些不错的进展
List[TermName]
但是,对于上面的示例,我无法找出创建访问器的通用方法,因为我有List(TermName('b'), TermName('c'), TermName('d')))
,我想生成一个匿名函数,_.b.c.d
即(x: A) => x.b.c.d
。我怎么做?
基本上,我怎样才能以通用的方式编写这些行?
scala - 使用 Scala 宏生成方法
我想在 Scala 2.11+ 中使用注释宏生成方法的别名。我什至不确定这是否可能。如果是,如何?
示例 - 鉴于以下情况,我希望注释宏扩展为
我希望上面生成同义词方法存根,如下所示:
上面当然是一个有趣的例子,但我可以看到这种技术对于自动生成 API 的同步/异步版本或在具有大量同义词的 DSL 中很有用。是否也可以在 Scaladoc 中公开这些生成的方法?使用 Scala 元这可能吗?
注意:我的要求与:https ://github.com/ktoso/scala-macro-method-alias 完全不同
另外请不要将此标记为重复,因为问题有点不同,并且在过去 3 年中,Scala 宏领域发生了很大变化。
scala - 用于覆盖 Scala 函数的 toString 的宏注释
如何编写看起来像用法的宏注释@named("+2") _ + 2
并产生:
scala - Scala工具删除所有未使用的代码
我正在为我使用的编辑器编写一个 Scala 插件,它会突出显示所有未使用的代码路径(可能是未使用defs
的 、和) vals
,并为用户提供将它们从文件中拉出的选项。classes
implicits
.scala
我怎样才能做到这一点?为了简化问题,假设我们只有一个根级.scala
文件,没有外部依赖库或任何其他代码文件。
理想情况下,我希望这是一个 SBT 插件,给定一个这样的Foo.scala
文件,它会吐出Foo_min.Scala
文件并删除所有未使用的代码。
scala - 使用 scala-meta 注释案例类
我有一个使用 scala-meta 的真正初学者问题
我想根据字段的名称向案例类字段的子集添加注释。要注释的类和字段定义如下:
前:
后:
我的问题与树转换中所需的准引号的语法有关:
- 选择指定的字段;和
- 插入注释
您能否参考任何可以为我指明正确方向的示例?
scala - 用 scala.meta 替换 scala.reflect,ClassTags 和 TypeTags 会发生什么?
或者这甚至相关吗?
我想到的是使用ClassTag
orTypeTag
注释,如下所示:
结果是 :
如您TypeTag
所见,编译器可以看到它添加了一个隐式参数。中是否有等价物scala.meta
?这将如何工作,处理擦除的方式是否会有任何变化?
scala - 如何在宏注释(内联元)中保留糖、格式和空格?
我正在将 Scala 函数导出为外部格式。为此,我使用scala.meta
和一个StaticAnnotation
. 就像是:
在ExportFunctions extends StaticAnnotation
函数体的实现中表示为一棵脱糖树:x.max(y)
.
但是,出于文档目的,拥有实际的源代码会更好。或者至少是糖(x max y
)。
有没有办法保留原始格式/糖?
scala - 如何使用 Scala-Meta 解析对象?
我正在尝试使用 Scala Meta 编写注释,以便可以从现有对象生成另一个案例类。
但是当我尝试这样做时:
我收到了这个错误:
错误:(5、20)方法解析的参数不足:(隐式转换:scala.meta.common.Convert[domain.MyObject.type,scala.meta.inputs.Input],隐式解析:scala.meta.parsers。 Parse[scala.meta.Source],隐式方言:scala.meta.Dialect)scala.meta.parsers.Parsed[scala.meta.Source]。未指定值参数转换、解析、方言。MyObject.parse[源].show[结构];} ^
我很困惑,因为根据他们的教程,这就是我需要从 http://scalameta.org/tutorial/#.parse[T]开始
我怎样才能反映这个对象循环遍历所有属性?
谢谢
scala - 将类型参数传递给 scala 元宏/注释
我想修改上面的宏并添加类型参数[A]。我尝试了以下但它没有编译