问题标签 [scala-reflect]

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 回答
252 浏览

java - 如何从 scala 程序调用 scala REPL 控制台?

我需要在我的 Scala 应用程序中嵌入 Scala REPL 功能。我怎样才能做到这一点 ?我需要调用哪个 Scala 方法/类?

我看了一下 scala.tools.nsc.interpreter 包,但我不知道该怎么做。

0 投票
1 回答
112 浏览

scala - 如何防止在 StaticAnnotation 中进行类型检查?

我正在创建一些宏库,它们从enclosing方法的注释中读取一些信息。

这些信息被编码foo(bar, baz)StaticAnnotation @info.

foo(bar, baz)myMacro但是,包含需要的信息,foo(bar, baz)无法在该位置进行类型检查@info,并在类型检查时导致编译器错误foo(bar, baz)

我想知道我是否可以创建一个dontTypecheck防止foo(bar, baz)类型检查的宏。这样我就可以创建类似的东西:

dontTypecheck宏应该产生一个Tree包含 untype-checked的foo(bar, baz)

如何创建dontTypecheck宏?

0 投票
2 回答
486 浏览

scala - Scala 将字符串反射到单例对象

我正在寻找一种将作为字符串给出的 Scala 单例对象(例如:package1.Main)转换为 Main 的实际实例的方法,以便我可以在其上调用方法。

问题示例:

magiclyConvert1 和magicallyConvert2 函数如何实现?

0 投票
1 回答
706 浏览

scala - Symbol 是 case 对象吗?

我已经尝试过.asClass.primaryConstructor.isStatic,但是如果将密封特征定义为依赖类型,那将不起作用。

0 投票
1 回答
438 浏览

scala - 访问案例类注释

如何将注释作为FieldName对象访问?文档提到了 tree.children.tail,但是没有类型。

0 投票
0 回答
273 浏览

scala - scala中的案例类反射

我有两个问题。首先,这是我通过反射实例化类构造函数的反射代码:

(Ps,我很清楚这不是类型安全的,这对我来说没问题,但这是我能做的最好的事情)

第一个问题:有没有更清洁的方法来做到这一点?似乎有很多样板。我不太担心线程安全,因为我计划在运行时为某个类 [T] 定义固定数量的这些转换器。它只是看起来有点丑陋。

第二:这会导致与案例类实例化有关的任何类型的内存泄漏吗?

0 投票
1 回答
121 浏览

scala - 在没有 reify 的情况下编写代码时,Scala 宏不会编译

我一直在研究复杂的编译时反射,并且遇到了使用 AST 手动制作 Scala 代码的需求。在进行实验时,我注意到一个奇怪的编译错误,这对我来说并没有什么意义,所以我尝试在一个测试项目中重现它。

我使用Scala 2.10.4

这是代码:

宏.scala:

测试者.scala:

的输出c.echo是:

我得到的编译错误是value now is not a member of java.time.OffsetDateTime在调用Macro.manualAstTest.
正如回声的输出所暗示的那样,这两个表达式是相同的——但一个有效(来自 的表达式reify)而另一个无效(使用 apply-select 制作的表达式)。

两者之间可能有什么区别?

0 投票
2 回答
1753 浏览

scala - 案例类的 TypeTag

我想创建一个Bla带有类型参数的案例类,A它知道A运行时的类型(它将其存储在其info字段中)。

我的尝试如下例所示。问题是这个例子不能编译。

但是,当我发表评论时val info=Run.paramInfo(this),程序运行良好并打印:

Bla() 的类型具有类型参数 List(Int)

有没有办法让下面的这个例子编译?(或以其他方式实现相同的目标,即案例类自我意识到其类型参数的类型?)

0 投票
1 回答
762 浏览

scala - Scalameta:识别特定的注释

我想使用 scalameta 注释宏在 Scala 中自动生成 REST API 模型。具体来说,给定:

我想生成:

我在这里工作:https ://github.com/pathikrit/metarest

具体来说,我正在这样做:

我对以下代码片段不满意:

上面的代码对我拥有的注释进行“字符串”模式匹配。无论如何要重新使用我必须为这些模式匹配的确切注释:

0 投票
0 回答
627 浏览

scala - 使用 Scala Reflect 时出现奇怪的 Scala 错误

我在我现有的项目之一中添加了对 scala 反射库版本 2.11.8 的依赖项,这样我就可以使用 TypeTag,但奇怪的是我在运行时遇到了一些错误。这是我的错误:

有没有人遇到过类似的问题?我的 Scala 版本是 2.11.8