通常會用到 Map 物件來做資料存查(cache); 當資料存入 map 時, 會將 key 自動轉成物件, 而且一般會使用 字串 物件做為資料的識別(key)。理想上來說:
def key1 = 'aKey' def key2 = "$key1" def map1 = [:] def map1[key1] = "some thing" // key1 與 key2 等義(雖然型別不同) assert map1."$key2" == map1[key1] map1.remove("aKey") assert map1.size() == 0
不過, 同時使用 groovy 語法又使用 Java Map 的 API 進行資料的操作 (在一處 code block 設值, 另一處 code block 取值或移除), 往往會稍不留意 key 的型別或自動轉換後的型別, 結果是存得進去卻取不出來; 也就是說:
// object_of_String 與 object_of_GString 值相同下 assert someMap[object_of_String] != someMap[object_of_GString]
此時, key 要保持型別的一致才能順利存取。目前的實際程式測試結果是如此, 得再進一步驗證。
沒有留言:
張貼留言