使用类型Of筛选变量



如何从typeOf中筛选变量?为什么检查isMethod如此简单,而且isVariable不存在?

typeOf[User].members.filter(_.isMethod)

这不是一个好主意,但它是有效的;):

typeOf[User].members.filter(_.toString.startsWith("variable"))

有一个isVar方法,但它只存在于TermSymbol上,而不存在于Symbol本身(TermSymbol也可以是val、方法、参数等):

typeOf[User].members.collect { case x: TermSymbol if x.isVar => x }

或使用filter:

typeOf[User].members.filter(x => x.isTerm && x.asTerm.isVar)

编辑:你说得对,这里缺乏对称性。

有几个东西用TermSymbol表示,但不知何故,只有方法在Symbol中有自己的isMethod;像CCD_ 10和CCD_。

最新更新