问题标签 [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.
android - sbt-android:无法在 android 上使用 scala-reflect:找不到 java.rmi.Remote
我正在尝试使用 scala-reflect 包进行 android 开发。我在 build.sbt 中添加了 scala-reflect 依赖项:
但我得到一个例外:
我试图添加和构建项目的java源代码java.rmi.Remote
(java.rmi.RemoteException
因为android:package --core-library
sbt没有找到dexCoreLibrary选项),它构建成功,但是我得到了运行时错误。
那么,是否可以添加 java.rmi 依赖项,否则 scala.reflect 可以使用它?
我在实现方法 Option.orDefault 的上下文中使用 scala.reflect 库:
如果您知道 Option.orDefault 的更好实现(可能没有 scala.reflect),请告诉我。
scala - 涉及对象节俭生成的方法参数的非法循环引用
我正在尝试列出节俭服务端点参数的所有成员。
然后我得到了illegal cyclic reference involving object method_args
我想知道这是否是因为method_args 是MyService 中的一个静态类。有什么特殊的获取方式吗?我试过val paramsClass = mirror.staticClass("mytest.thrift.MyService$method_args")
了,立即得到同样的错误。
谁能建议如何解决这个问题?
scala - 如何编写一个评估为类似于“reify”的树的 Scala 宏
我想编写一个宏来捕获程序片段并使其Tree
在运行时可用。基本上,我想要的功能,reify
但将其嵌入到不同的语法中。我想调用apply
一个Workload
伴随对象,提供一些代码并将Tree
提供的代码存储在一个新创建的 Workload 对象的成员中。
不幸的是,我不能只转发,reify
因为它是一个宏。我想,我必须编写自己的类似于reify
. 但是我不知道如何Tree
从宏中返回 a ,并且reify
只提到了一些硬连线实现的来源。
如何实现?
更新
我写了一个小例子来强调我的观点
唯一缺少的是一种expr
变成c.Expr[Expr[Unit]]
scala - 如何从多态类型字段加载隐式清单
我正在尝试为我的 ADT 构建一个解释器,但我不知道如何以一种很好的方式解决加载隐式清单的问题
这是我可以创建的最佳解决方案,但我不喜欢我必须创建 vManifest 函数才能在 eval 中加载清单。
有一个更好的方法吗?
scala - 如何使用 Scala 反射对从 ToolBox 解析的包中的代码进行类型检查?
以下简单示例(在 Scala 2.11.8 中运行):
导致以下异常toolbox.typecheck(tree)
:
如何获得经过类型检查的 AST 树?
scala - 在 Akka 接收中保留类型参数
Roland Kuhn 在这篇文章中已经回答了这个问题,然而,尽管有几条评论要求详细说明,但他并没有费心分享完整的答案。
这就是我想要做的:我有一个包装类case class Event[T](t: T)
,我将它的实例发送给 Akka 演员。在receive
那个演员的方法中,然后我想区分Event[Int]
and Event[String]
,由于类型擦除,这显然不是那么简单。
Roland Kuhn 在上述帖子中分享的是“只有一种方法可以做到”,即在消息中体现类型信息。所以我这样做了:
尽管被不同的人要求提供它,但罗兰库恩并没有说当时在receive
方法中实际上要做什么。这是我尝试过的。
这是我能想到的最好的方法,因为很难将头绕在 Scala 的反射丛林中。但是,它没有编译:
因此,我特别询问该receive
方法应该是什么样子。
scala - 在编译时列出包中的类
我试图在编译时列出一个包中的所有类。
让我们定义一个具有以下结构的项目:
在哪里:
方法.scala
Method1.scala 和 Method2.scala(更改各自的名称)
我想从 Main.scala 获取 com.package._ 中定义的类列表:
我可以对名称进行硬编码(如图所示),但我想知道是否可以在编译时获得这些名称。我知道在运行时可以使用http://software.clapper.org/classutil/
scala - 使用反射获取案例类注释?
我有一个案例类,例如:
我希望能够访问该注释及其存储的任何信息
我可以使用 scala 反射(使用 2.11.8)来获取案例访问器
但是当我尝试访问.annotations
它们时,什么都没有。我意识到注释在技术上是在构造函数参数上,但我该如何得到它呢?
scala - 为什么这个公共字段有一个 PRIVATE 标志?
我正在编写一个 Scala 宏并遍历树以查找类中的非私有字段。
考虑宏查看的这段代码:
我正在遍历这段代码并到达bar
's ValDef
. 它的修饰符中只有两个标志:Flag.PRIVATE
和Flag.LOCAL
.
使用private
修饰符bar
不会改变任何事情。使用protected
修饰符只会添加Flag.PROTECTED
到标志列表中。
我错过了什么?如何区分私有字段和公共字段?
编辑:
以下代码:
既没有Flag.PRIVATE
也没有Flag.LOCAL
,这是有道理的,因为它是一个“全球”公共 val。
我在里面工作的上下文是为wartremover编写一个新的 wart ,它只是Traverser
在扩展宏并遍历代码块时从上下文的宇宙中获取一个。
scala - 如何在scala中调整字符串以更正classOf的输入类型?
我想删除以下导入:
原因是我想将其version
作为参数传递,所以我可以有以下选项:
当我这样做时,它会像这样进行硬编码
但我需要它是一个字符串类型,所以我可以每次都附加版本。
我也尝试过这样做,但效果不佳:
你能帮忙吗?