`indexOf` returns groovy.Gstrings 列表中的意外结果
`indexOf` returns unexpected result on list of groovy.Gstrings
当 运行 indexOf
在 Gstring 列表上时,return 值始终是 -1
,尽管预期索引匹配:
mystr = "foo"
// expect .indexOf to return 0
println "${["${mystr}_bar", "baz"].indexOf("foo_bar")}" // -1
println "${[mystr + "_bar", "baz"].indexOf("foo_bar")}" // 0
我是误会了什么还是这是一个错误?
你必须使用:
["${mystr}_bar".toString(), "baz"].indexOf("foo_bar")
// or if you have many: ["${mystr}_bar", "baz"]*.toString().indexOf("foo_bar")
(注意那里显式的 .toString()
)。
GString
看起来一样(例如,他们 .toString()
到他们当前的状态)
像 String
,但它们不是。例如。你可以在里面有一个封闭
GString
或生成随机数的调用。他们不是
像他们的 String
兄弟一样不可变或“稳定”。那例如也是
原因,为什么他们不适合成为地图中的钥匙。所以他们等于
相同,但它们散列不同。
当 运行 indexOf
在 Gstring 列表上时,return 值始终是 -1
,尽管预期索引匹配:
mystr = "foo"
// expect .indexOf to return 0
println "${["${mystr}_bar", "baz"].indexOf("foo_bar")}" // -1
println "${[mystr + "_bar", "baz"].indexOf("foo_bar")}" // 0
我是误会了什么还是这是一个错误?
你必须使用:
["${mystr}_bar".toString(), "baz"].indexOf("foo_bar")
// or if you have many: ["${mystr}_bar", "baz"]*.toString().indexOf("foo_bar")
(注意那里显式的 .toString()
)。
GString
看起来一样(例如,他们 .toString()
到他们当前的状态)
像 String
,但它们不是。例如。你可以在里面有一个封闭
GString
或生成随机数的调用。他们不是
像他们的 String
兄弟一样不可变或“稳定”。那例如也是
原因,为什么他们不适合成为地图中的钥匙。所以他们等于
相同,但它们散列不同。