微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`indexOf` 在 groovy.Gstrings 列表上返回意外结果

如何解决`indexOf` 在 groovy.Gstrings 列表上返回意外结果

在 Gstring 列表上运行 indexOf 时,尽管预期索引匹配,但返回值始终为 -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 兄弟一样不可变或“稳定”。那例如也是 原因,为什么它们不适合成为地图的关键。所以他们等于 相同,但它们哈希不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。