问题标签 [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.
java - 如何从 scala 程序调用 scala REPL 控制台?
我需要在我的 Scala 应用程序中嵌入 Scala REPL 功能。我怎样才能做到这一点 ?我需要调用哪个 Scala 方法/类?
我看了一下 scala.tools.nsc.interpreter 包,但我不知道该怎么做。
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
宏?
scala - Scala 将字符串反射到单例对象
我正在寻找一种将作为字符串给出的 Scala 单例对象(例如:package1.Main)转换为 Main 的实际实例的方法,以便我可以在其上调用方法。
问题示例:
magiclyConvert1 和magicallyConvert2 函数如何实现?
scala - Symbol 是 case 对象吗?
我已经尝试过.asClass.primaryConstructor.isStatic
,但是如果将密封特征定义为依赖类型,那将不起作用。
scala - 访问案例类注释
如何将注释作为FieldName
对象访问?文档提到了 tree.children.tail,但是没有类型。
scala - scala中的案例类反射
我有两个问题。首先,这是我通过反射实例化类构造函数的反射代码:
(Ps,我很清楚这不是类型安全的,这对我来说没问题,但这是我能做的最好的事情)
第一个问题:有没有更清洁的方法来做到这一点?似乎有很多样板。我不太担心线程安全,因为我计划在运行时为某个类 [T] 定义固定数量的这些转换器。它只是看起来有点丑陋。
第二:这会导致与案例类实例化有关的任何类型的内存泄漏吗?
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 制作的表达式)。
两者之间可能有什么区别?
scala - 案例类的 TypeTag
我想创建一个Bla
带有类型参数的案例类,A
它知道A
运行时的类型(它将其存储在其info
字段中)。
我的尝试如下例所示。问题是这个例子不能编译。
但是,当我发表评论时val info=Run.paramInfo(this)
,程序运行良好并打印:
Bla() 的类型具有类型参数 List(Int)
有没有办法让下面的这个例子编译?(或以其他方式实现相同的目标,即案例类自我意识到其类型参数的类型?)
scala - Scalameta:识别特定的注释
我想使用 scalameta 注释宏在 Scala 中自动生成 REST API 模型。具体来说,给定:
我想生成:
我在这里工作:https ://github.com/pathikrit/metarest
具体来说,我正在这样做:
我对以下代码片段不满意:
上面的代码对我拥有的注释进行“字符串”模式匹配。无论如何要重新使用我必须为这些模式匹配的确切注释:
scala - 使用 Scala Reflect 时出现奇怪的 Scala 错误
我在我现有的项目之一中添加了对 scala 反射库版本 2.11.8 的依赖项,这样我就可以使用 TypeTag,但奇怪的是我在运行时遇到了一些错误。这是我的错误:
有没有人遇到过类似的问题?我的 Scala 版本是 2.11.8