簡體   English   中英

Groovy中的findResults方法似乎不適用於字符串數組

[英]The findResults method in Groovy seems not to work on a String Array

我嘗試在拆分的String上調用方法“ findResults”,但出現編譯錯誤。 拆分一個字符串會返回一個字符串數組,我認為這將被視為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]

注意我知道可以通過在上面的代碼中用tokenize()替換split()或將split()方法的結果強制轉換為List來獲得正確的結果。

如groovydoc中所述, split將返回一個字符串數組,該字符串沒有很多groovy增強。 tokenize返回列表而不是數組:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM