Я читаю сценарий Groovy и нахожу много вызовов trim () и особенно такие выражения:
x = "ok".trim()
Мне интересно, имеет ли trim (), помимо очевидной обрезки, еще какой-то эффект, который объясняет приведенное выше выражение (это также может быть просто плохой код).
Я знаю, что есть String и GString, может быть какое-то преобразование?
нет, обрезка удаляет пробелы до и после текста. например, "ok" .trim () даст вам "ok" (без пробелов)
Если ваше «хорошо» каким-то образом считается GString (например, если в нем есть ${..}), то trim () будет действовать как «в гольф» .toString(). Может быть, это связано с плохим копированием и вставкой или встраиванием? И поскольку в вашем примере кода перед ним нет def, это какая-то особенная снежинка, такая как jenkins, soapui, gradle, ... вы не упомянули?
Где-то выше есть def x = ..., он просто отлично используется в качестве языка сценариев во фреймворке (ничего особенного)




Определение 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 (), ваш код не имеет никакого эффекта.
Я поискал мета-класс, ничего не нашел. Но очень интересный ответ (если ничего не появится, я его приму)
Да, кто-то пишет не очень чистый код ... Я бы убрал обрезку
в этом случае:
x = "ok".trim()не действует.