gpt4 book ai didi

Groovy - GString 用作键与 String 作为键,下标表示法与 put 方法

转载 作者:行者123 更新时间:2023-12-01 12:23:30 24 4
gpt4 key购买 nike

groovy documentation ,它提到使用 GString 作为键是不好的:

def key = 'some key'
def map = [:]
def gstringKey = "${key.toUpperCase()}"
map.put(gstringKey,'value')
assert map.get('SOME KEY') == null

但是,只需更改 put() 方法以使用下标表示法:
def key = 'some key'
def map = [:]
def gstringKey = "${key.toUpperCase()}"
map[gstringKey] = 'value' // here
assert map.get('SOME KEY') == null

足以导致断言失败。使用 [] 和 put() 方法之间的语义有何不同?下标符号是否有某种隐式转换为 String 可能?

最佳答案

下标符号是否隐式转换为字符串?

基本上,是的。

声明a[b] = c相当于调用 a.putAt(b, c)方法,根据 Groovy operator overloading规则。

putAt method的具体签名是 void putAt(String property, Object newValue) ,这意味着如果 b是一个 Groovy 字符串,它将首先使用其 toString() 转换为字符串方法。

最终,putAt方法将调用 Map.put使用 String值作为关键。

关于Groovy - GString 用作键与 String 作为键,下标表示法与 put 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com