Groovy 冗余 trim() 调用
Groovy redundant trim() calls
我正在阅读 Groovy 脚本,发现很多 trim() 调用,尤其是这种表达式:
x = "ok".trim()
我想知道 trim() 除了明显的 trimming 之外是否还有一些其他效果可以解释上面的表达式(它也可能只是错误的代码)。
trim()
的默认定义从字符串的开头和结尾删除 space。因此,在您的应用中,如果您使用默认定义,则 "ok".trim() 没有任何效果。
但是如果您更改 trim()
方法的定义,那么它可能会以不同的方式运行。现在 String 是一个最终的 class 所以你不能覆盖它但是 Groovy 给你一个叫做 metaclass
的特性允许你在运行时改变定义。
运行 groovy console.
下面的代码
String.metaClass.trim = {
//you could have your own trim implementation here for String class
return "Hi"
}
x = "ok".trim()
println x
输出:
Hi
所以,我的结论是,只要您不更改 trim() 的定义,您的代码就不会产生任何影响。
我正在阅读 Groovy 脚本,发现很多 trim() 调用,尤其是这种表达式:
x = "ok".trim()
我想知道 trim() 除了明显的 trimming 之外是否还有一些其他效果可以解释上面的表达式(它也可能只是错误的代码)。
trim()
的默认定义从字符串的开头和结尾删除 space。因此,在您的应用中,如果您使用默认定义,则 "ok".trim() 没有任何效果。
但是如果您更改 trim()
方法的定义,那么它可能会以不同的方式运行。现在 String 是一个最终的 class 所以你不能覆盖它但是 Groovy 给你一个叫做 metaclass
的特性允许你在运行时改变定义。
运行 groovy console.
下面的代码String.metaClass.trim = {
//you could have your own trim implementation here for String class
return "Hi"
}
x = "ok".trim()
println x
输出:
Hi
所以,我的结论是,只要您不更改 trim() 的定义,您的代码就不会产生任何影响。