问题标签 [scala-quasiquotes]
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 文档示例中的“宏实现参考具有错误的形状”
以下宏从http://docs.scala-lang.org/overviews/quasiquotes/usecases.html粘贴:
它在 Scala 2.11.1 中产生以下错误消息:
我尝试以多种方式更改代码(import reflect.macros.whitebox.Context
,,import reflect.macros.blackbox.Context
放在scala.
每次导入的开头,使参数始终按名称或按值一致,,macro impl[T]
摆脱类型参数,,macro debug.impl
将) 没有成功。我究竟做错了什么?是进口的东西吗?这些(大部分)来自不同的网页,http://docs.scala-lang.org/overviews/quasiquotes/setup.html。apply
impl
该页面的其他两个示例宏都发生了相同的错误:
scala - 宏定义的scala quasiquote中的类型不匹配:“类型不匹配;找到:field.NameType required: c.universe.TermName”
我问了一个更长的问题,但似乎代码太多,人们无法整理,所以我创建了这个问题,专注于我在 Scala 中使用宏时面临的一个更小、更具体的问题。
考虑以下代码片段:
请注意,这fields
只是此代码中案例类的主要构造函数的参数列表。我感到困惑的是 quasiquote 的结果q"$decoded -> t.$name"
。这到底是什么意思?它应该有什么类型?我收到一个编译错误,说明如下:
谁能解释这个错误?谢谢。
scala - java bean类创建的scala宏未知类型错误
我创建了以下代码片段,用作 scala 类型到 java 类型的编码生成器。
当我尝试使用它时,这在宏项目编译时编译得很好。它在使用库项目编译时引发异常。
我被困在这里,在我的代码中找不到任何错误。
Scala 版本是 2.11.1。
scala - 如何在 Scala 宏中匹配箭头关联树(`x->y`)?
我想对x -> y
Scala 宏中的操作树进行模式匹配。我正在针对 Scala 2.10.4(带有Macro Paradise)和 Scala 2.11.x进行交叉编译。我尝试了以下模式,但都没有奏效:
什么模式可以使这个匹配同时适用于 2.10.4 和 2.11.x?
scala - 如何使用 quasiquote 提取主构造函数参数
我目前正在使用:
提取classDef
和paramss
。无论如何,这可能不那么冗长吗?paramss
也许从模式匹配中提取的东西a classDef: ClassDef
?
scala - 使用从 reify 返回的 quasiquotes 和树进行 AST 取消引用
我试图一起使用 Toolbox 和 quasiquote 来做代码生成任务,并在使用从返回的对象的 AST 时遇到 StackOverflowError reify(x).tree
,我的代码如下:
当我删除类 A 或使用def calculate(a: B)
的类型参数时,toolBox.eval
成功并按预期工作,即在控制台中打印 2。
我不太明白为什么会发生这种情况,有人可以解释为什么带有类型参数的类定义无法通过评估吗?
scala - 使用宏生成通配符绑定模式
Scala 允许对 varargs 进行模式匹配unapplySeq
:
我想用宏生成这样的模式。我该怎么做?一个自然的尝试是行不通的:
但是,可以从q
模式中提取实际类型,然后用它重新创建模式:
但这太hacky了,我不想这样做。
scala-quasiquotes - Scala 2.10.4:解析此准引用时,抛出异常
当我执行上面的代码时,我得到以下错误
scala - Scala quasiquote 连接
我是 scala 宏的新手,我花了几天时间尝试编写我的第一个宏。我对 quasiquotes 连接有疑问。
有一个 case 子句列表,假设如下:
我需要从中构建一个部分函数。问题是我不知道如何将它们粘贴到最终的准引用中。文档说我应该这样做:
但如果我这样做是行不通的。
有没有办法从这样的列表中构建 PartialFunction ?
谢谢你的帮助。