Groovy избыточные вызовы trim ()

Я читаю сценарий Groovy и нахожу много вызовов trim () и особенно такие выражения:

x = "ok".trim()

Мне интересно, имеет ли trim (), помимо очевидной обрезки, еще какой-то эффект, который объясняет приведенное выше выражение (это также может быть просто плохой код).

в этом случае: x = "ok".trim() не действует.

dsharew 16.03.2018 12:25

Я знаю, что есть String и GString, может быть какое-то преобразование?

MaanooAk 16.03.2018 12:28

нет, обрезка удаляет пробелы до и после текста. например, "ok" .trim () даст вам "ok" (без пробелов)

dsharew 16.03.2018 12:30

Если ваше «хорошо» каким-то образом считается GString (например, если в нем есть ${..}), то trim () будет действовать как «в гольф» .toString(). Может быть, это связано с плохим копированием и вставкой или встраиванием? И поскольку в вашем примере кода перед ним нет def, это какая-то особенная снежинка, такая как jenkins, soapui, gradle, ... вы не упомянули?

cfrick 16.03.2018 13:27

Где-то выше есть def x = ..., он просто отлично используется в качестве языка сценариев во фреймворке (ничего особенного)

MaanooAk 16.03.2018 13:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
2 446
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определение trim() по умолчанию удаляет пробелы в начале и в конце строки. Итак, в вашем приложении, если вы используете определение по умолчанию, тогда "ok" .trim () не имеет никакого эффекта.

Но если вы измените определение метода trim(), возможно, он будет вести себя иначе. Теперь String является последним классом, поэтому вы не можете его переопределить, но Groovy предоставляет вам функцию metaclass, которая позволяет вам изменять определение во время выполнения.

Запустите приведенный ниже код на отличном приставка.

String.metaClass.trim = {
 //you could have your own trim implementation here for String class
 return "Hi"
}
x = "ok".trim()
println x  

Выход:

Hi

Итак, мой вывод: как только вы не меняете определение trim (), ваш код не имеет никакого эффекта.

Я поискал мета-класс, ничего не нашел. Но очень интересный ответ (если ничего не появится, я его приму)

MaanooAk 16.03.2018 12:48

Да, кто-то пишет не очень чистый код ... Я бы убрал обрезку

tim_yates 16.03.2018 14:21

Другие вопросы по теме