在Groovy中声明函数

qwe*_*qwe 1 java groovy function

我试图在Groovy中声明应该返回一个字符串的以下函数.

def String sortCharacters(String string) {
    char[] charArray = string.toLowerCase().toCharArray();
    Arrays.sort(charArray);
    return String.valueOf(charArray)
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我在尝试在字符串上使用它时遇到错误.

string1.sortCharacters(string1);

No signature of method: java.lang.String.sortCharacters() is applicable for argument types: (java.lang.String)
Run Code Online (Sandbox Code Playgroud)

Opa*_*pal 5

您不能在Stringobject 上调用此方法,但是以下列方式调用:

sortCharacters(string1)
Run Code Online (Sandbox Code Playgroud)

要么

string1 = sortCharacters(string1)
Run Code Online (Sandbox Code Playgroud)

如果您想要添加sortCharactersString类本身,可以通过以下方式完成:

String.metaClass.sortCharacters = {
    char[] charArray = delegate.toLowerCase().toCharArray();
    Arrays.sort(charArray)
    return String.valueOf(charArray)
}

assert 'abz' == 'bza'.sortCharacters()
Run Code Online (Sandbox Code Playgroud)

  • 你也可以做`string.toLowerCase().toList().sort().join()`;-) (2认同)