问题标签 [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.

0 投票
1 回答
1546 浏览

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.htmlapplyimpl

该页面的其他两个示例宏都发生了相同的错误:

0 投票
1 回答
553 浏览

scala - 宏定义的scala quasiquote中的类型不匹配:“类型不匹配;找到:field.NameType required: c.universe.TermName”

我问了一个更长的问题,但似乎代码太多,人们无法整理,所以我创建了这个问题,专注于我在 Scala 中使用宏时面临的一个更小、更具体的问题。

考虑以下代码片段:

请注意,这fields只是此代码中案例类的主要构造函数的参数列表。我感到困惑的是 quasiquote 的结果q"$decoded -> t.$name"。这到底是什么意思?它应该有什么类型?我收到一个编译错误,说明如下:

谁能解释这个错误?谢谢。

0 投票
1 回答
383 浏览

scala - java bean类创建的scala宏未知类型错误

我创建了以下代码片段,用作 scala 类型到 java 类型的编码生成器。

当我尝试使用它时,这在宏项目编译时编译得很好。它在使用库项目编译时引发异常。

我被困在这里,在我的代码中找不到任何错误。

Scala 版本是 2.11.1。

0 投票
1 回答
292 浏览

scala - 如何在 Scala 宏中匹配箭头关联树(`x->y`)?

我想对x -> yScala 宏中的操作树进行模式匹配。我正在针对 Scala 2.10.4(带有Macro Paradise)和 Scala 2.11.x进行交叉编译。我尝试了以下模式,但都没有奏效:

什么模式可以使这个匹配同时适用于 2.10.4 和 2.11.x?

0 投票
0 回答
145 浏览

scala - 如何使用 quasiquote 提取主构造函数参数

我目前正在使用:

提取classDefparamss。无论如何,这可能不那么冗长吗?paramss也许从模式匹配中提取的东西a classDef: ClassDef

0 投票
1 回答
502 浏览

scala - 使用从 reify 返回的 quasiquotes 和树进行 AST 取消引用

我试图一起使用 Toolbox 和 quasiquote 来做代码生成任务,并在使用从返回的对象的 AST 时遇到 StackOverflowError reify(x).tree,我的代码如下:

当我删除类 A 或使用def calculate(a: B)的类型参数时,toolBox.eval成功并按预期工作,即在控制台中打印 2。

我不太明白为什么会发生这种情况,有人可以解释为什么带有类型参数的类定义无法通过评估吗?

0 投票
2 回答
176 浏览

scala - 使用宏生成通配符绑定模式

Scala 允许对 varargs 进行模式匹配unapplySeq

我想用宏生成这样的模式。我该怎么做?一个自然的尝试是行不通的:

但是,可以从q模式中提取实际类型,然后用它重新创建模式:

但这太hacky了,我不想这样做。

0 投票
0 回答
182 浏览

scala-quasiquotes - Scala 2.10.4:解析此准引用时,抛出异常

当我执行上面的代码时,我得到以下错误

0 投票
1 回答
280 浏览

scala - Scala Quasiquote 提升

Quasiquotes 的 Scala 文档在解释Lifting时提到了这一点:

还可以结合提升和取消引用拼接:

代码示例中提升与取消引用拼接的具体实现在哪里?

0 投票
1 回答
843 浏览

scala - Scala quasiquote 连接

我是 scala 宏的新手,我花了几天时间尝试编写我的第一个宏。我对 quasiquotes 连接有疑问。

有一个 case 子句列表,假设如下:

我需要从中构建一个部分函数。问题是我不知道如何将它们粘贴到最终的准引用中。文档说我应该这样做:

但如果我这样做是行不通的。

有没有办法从这样的列表中构建 PartialFunction ?

谢谢你的帮助。