2015-02-23 5 views
1

Я пытаюсь объявить в Groovy следующую функцию, которая должна возвращать строку.Объявление функций в Groovy

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

По какой-то причине я получаю сообщение об ошибке при попытке использовать его в строке.

string1.sortCharacters(string1); 

No signature of method: java.lang.String.sortCharacters() is applicable for argument types: (java.lang.String) 

ответ

4

Вы не можете вызывать этот метод на String объекта, но Int следующим образом:

sortCharacters(string1) 

или

string1 = sortCharacters(string1) 

Если Вы хотите добавить sortCharacters к String самого его класса могут быть выполнены следующим образом:

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

assert 'abz' == 'bza'.sortCharacters() 
+1

Они также не нуждаются в 'def String' –

+0

Конечно, спасибо @tim_yates. – Opal

+2

Вы также можете просто выполнить 'string.toLowerCase(). ToList(). Sort(). Join()' ;-) –

Смежные вопросы