你如何从typeOf过滤变量?为什么检查isMethod如此简单而 isVariable 不存在?
typeOf[User].members.filter(_.isMethod)
这不是一个好主意,但它有效;):
typeOf[User].members.filter(_.toString.startsWith("variable"))
你如何从typeOf过滤变量?为什么检查isMethod如此简单而 isVariable 不存在?
typeOf[User].members.filter(_.isMethod)
这不是一个好主意,但它有效;):
typeOf[User].members.filter(_.toString.startsWith("variable"))
有一个isVar方法,但它只存在于 上TermSymbol,而不是Symbol它本身(aTermSymbol也可以是 a val、方法、参数等):
typeOf[User].members.collect { case x: TermSymbol if x.isVar => x }
或与filter:
typeOf[User].members.filter(x => x.isTerm && x.asTerm.isVar)
编辑:你说得对,这里缺乏对称性。
有几件事用 表示TermSymbol,但不知何故,只有方法有自己isMethod的Symbol; 其他人喜欢isVar并且isVal没有那么幸运。