我不明白为什么我的简单String相等测试返回 false。
代码是:
boolean isDevelopment() {
//config.project_stage is set to "Development"
String cfgvar = "${config.project_stage}"
String comp = "Development"
assert cfgvar.equals(comp)
}
Run Code Online (Sandbox Code Playgroud)
结果是:
assert cfgvar.equals(comp)
| | |
| false Development
Development
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我也会出错:
assert cfgvar == comp
Run Code Online (Sandbox Code Playgroud)
toString()没有必要。很可能您config.project_stage在cfgvar. 中有一些尾随空格,因此它们也保留在.
comp 没有多余的空格,可以从您的代码中看到什么。
最初表达式"${config.project_stage}"是GString
类型的,但由于您将它分配给一个类型为 as 的变量String,它被强制转换为String,因此toString()不会改变任何内容。
使用equals(...)或取决于您==。实际上,Groovy 默默地将第二种形式转换为第一种形式。
所以,总而言之,你可以写assert cfgvar.trim() == comp.
你也可以cfgvar在一开始就修剪,写:
cfgvar = "${config.project_stage}".trim()
Run Code Online (Sandbox Code Playgroud)
然后不用担心任何尾随空格。
| 归档时间: |
|
| 查看次数: |
19174 次 |
| 最近记录: |