如何从 typeOf 过滤变量?为什么检查 isMethod 是如此简单且isVariable不存在?
typeOf[User].members.filter(_.isMethod)
这不是一个好主意,但它有效;):
typeOf[User].members.filter(_.toString.startsWith("variable"))
答案 0 :(得分:2)
有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
表示了一些事情,但只有某些方法只有isMethod
中有Symbol
个方法;像isVar
和isVal
这样的其他人并不那么幸运。