2

我尝试在拆分字符串上调用方法“findResults”,但出现编译错误。拆分字符串返回一个字符串数组,我认为在 Groovy 中会被视为一个集合。其他 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]

注意我知道我可以通过将上述代码中的 split() 替换为 tokenize() 或将 split() 方法的结果转换为 List 来获得正确的结果。

4

1 回答 1

2

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

def names = "john paul pete"
assert names.tokenize().findResults { 
    if (it.startsWith("p")) it.capitalize()
}.join(" ") == "Paul Pete"
于 2013-04-14T13:19:19.803 回答