groovy - Groovy 中的 findResults 方法似乎不适用于字符串数组

标签 groovy arrays missingmethodexception

我尝试在拆分字符串上调用方法“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() 方法的结果转换为列表来获得正确的结果。

最佳答案

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

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

关于groovy - Groovy 中的 findResults 方法似乎不适用于字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999035/

相关文章:

f# - 测试带有函数参数的函数时出现 MissingMethodException

apache - 使 groovy 请求接受 404 -- 错误 : hudson. AbortException:失败:返回的代码 404 不在接受范围内:[[100‥399]]

groovy - Groovy 中 static 和 final 修饰符的使用

Groovyclosure-on-collection-methods 不一致的类型转换

arrays - 如何让 MATLAB 更快地播放数组?

java - 根据Java中的单词长度将常见英语单词数组拆分为单独的列表/数组

visual-studio-2012 - 系统丢失方法异常 : Method not found: 'Microsoft .FSharp.Core.FSharpFunc` 2

java - Spring 合约 : how to send a Collection of Strings as a RequestBody

arrays - 使用谷歌表格中的数据验证从另一本书导入范围

powershell - 为什么从 PowerShell 调用 F# 代码时收到 MissingMethodException?