我的问题是关于groovy中matcher类中的属性 count 。以下是一个例子:
import java.util.regex.Matcher
def p= /[a-z]*/
Matcher m= "abc" =~ p
println m.count
正如您所看到的,Groovy实际上在Java中使用了Matcher类。根据javadoc,Matcher没有任何计数财产。我们必须使用循环在Java开发中手动计数以进行模式匹配。 groovy怎么做到这一点?它是在某处记录的吗?
谢谢,
答案 0 :(得分:0)
良好的开端是Groovy Backstage,尤其是Groovy Method Invocation。基本上,这些类使用一组通用工具(例如DefaultGroovyMethods
(见下文)Object
)来增加metaClass。在方法调用中,groovy将此考虑在内,因为"有什么"。 count
的{{1}}已经是一些更特殊的情况,Matcher
上使用的更为常见的例如Object
。
如果您只对功能本身感兴趣,可以查看GDK。例如。 Matcher.getCount()
。
如果您对如何实际实施感兴趣,那么一般来说,良好的开端始终是DefaultGroovyMethods
或DefaultGroovyMethodsSupport
的后代。因此,println
利用https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/runtime/StringGroovyMethods.java#L1508。