Groovy中的findResults方法似乎不适用于String数组

时间:2013-04-14 12:23:43

标签: groovy arrays missingmethodexception

我试图在拆分String上调用方法“findResults”,但是出现了编译错误。拆分String返回一个String数组,我认为它将被视为Groovy中的Collection。其他Collection方法对字符串数组有效,所以我的问题是:我遇到过一个错误吗?

def names = "john paul pete"
assert names.split().findResults{if (it.startsWith("p")) return it.capitalize()}.join(" ") == "Paul Pete"

结果: groovy.lang.MissingMethodException:没有方法签名:[Ljava.lang.String; .findResults()适用于参数类型:(gard_split_check $ _run_closure2)值:[gard_split_check $ _run_closure2 @ 722b302]

N.B。我知道我可以通过在上面的代码中用tokenize()替换split(),或者将split()方法的结果转换为List来获得正确的结果。

1 个答案:

答案 0 :(得分:1)

如groovydoc中所述,split将返回一个字符串数组,该字符串没有很多常规增强功能。 tokenize返回列表而不是数组:

def names = "john paul pete"
assert names.tokenize().findResults { 
    if (it.startsWith("p")) it.capitalize()
}.join(" ") == "Paul Pete"