Scala 使用typeOf筛选变量
如何从类型中筛选变量?为什么检查isMethod如此简单,而isVariable不存在Scala 使用typeOf筛选变量,scala,reflection,scala-2.10,Scala,Reflection,Scala 2.10,如何从类型中筛选变量?为什么检查isMethod如此简单,而isVariable不存在 typeOf[User].members.filter(_.isMethod) 这不是一个好主意,但很管用;): 有一个isVar方法,但它只存在于TermSymbol上,而不存在于Symbol本身(一个TermSymbol也可以是一个val、一个方法、一个参数等): 或使用过滤器: typeOf[User].members.filter(x => x.isTerm && x.asTe
typeOf[User].members.filter(_.isMethod)
这不是一个好主意,但很管用;):
有一个
isVar
方法,但它只存在于TermSymbol
上,而不存在于Symbol
本身(一个TermSymbol
也可以是一个val
、一个方法、一个参数等):
或使用过滤器:
typeOf[User].members.filter(x => x.isTerm && x.asTerm.isVar)
编辑:你是对的,这里缺少对称性
有几件事是用术语Symbol
表示的,但不知何故只有方法在符号中有自己的isMethod
;其他像isVar
和isVal
这样的人就没有这么幸运了。谢谢!你知道什么好的和简单的吗关于新反射的教程?我只知道。特别是关于所有内部反射词汇的部分,如宇宙、镜像、符号、类型、树、名称、范围。。。
typeOf[User].members.collect { case x: TermSymbol if x.isVar => x }
typeOf[User].members.filter(x => x.isTerm && x.asTerm.isVar)