1
すべてのClassNode
フィールドを特定の条件で取得したいと考えています。 は私のコードでは、次のようになります。コード内の `grep`機能を簡略化する
listener.classNode.fields.grep {
!it.name.startsWith('$') &&
!it.name.startsWith('_') &&
!it.name.equals('metaClass') &&
!it.name.startsWith('this')
}.collect{ it.name }
はそれを改善する方法はありますか?私はgrep
ブロック内のそれらのいくつかの条件文を取り除くことを意味しますか?
assert ['$a', '_a', 'metaClass', 'this', 'FOUND'].grep { n ->
!['$', '_', 'this'].any { a -> n.startsWith(a) } &&
!n.equals('metaClass')
} == ['FOUND']
覚えている:それは条件自体に来るとき
listener.classNode.fields*.name.grep {
!it.startsWith('$') &&
!it.startsWith('_') &&
!it.equals('metaClass') &&
!it.startsWith('this')
}
が、これは少し短くなることがあります。
私は理解できる唯一のコードを目指しています。 ilityは私を気にしない。 – lapots