def s = "hello"
def m = [:]
m << ["$s":'string1']
m << ["hello":'string2']
println m
assertequals m.hello, 'string2'
assertequals m["hello"], 'string2'
assertequals m.get("hello"), 'string2'
assertnull m.$s
assertequals m["$s"],'string2'
assertequals m.get("$s"),'string1'
最近用grails做東西出現bug,事後發現是對groovy中map使用不了解造成的。
使用了上面這兩行**來分別寫入與讀取
m << ["$s":'string1']
println m["$s"]
賦值的時候,key是gstring型別,如果用上面寫法用去取,會自動把key轉換成string型別,就會取不到,用m.get("$s")可以取到正確的值。
如果用string型別做key,以下兩種寫法,都可以
m << ["$s" as string :'string1']
m["$s"] = 'string1'
使用RocketMQ的小細節
目錄 訊息過濾 訂閱關係一致性 總結 訊息重試 訊息冪等 總結 說到訊息過濾,就不得不說到 tag。沒錯,就是我們之前在專業術語中提到過的 tag。也稱為訊息標籤,用來標記 topic 下的不同用途的訊息。在 rocketmq 中消費者是可以按照 tag 對訊息進行過濾。舉個電商交易場景的例子,使用...
typedef使用時的小細節
基礎不牢,地動山搖。今天在編譯的時候出現了個小錯誤困惑一下,主要是對typedef的理解不清晰造成的。其實typedef的使用跟取別名差不多。可以對比 很多情況下,typedef都是用於結構體的定義中。這裡是給tagdatastructnode這個結構體取了乙個別名,叫datastructnode。...
Vue使用小細節點
動態class繫結 新增text 平級別的css text vue的插值表示式,不僅能使用變數,還能使用js表示式,如下 計算屬性,方法,偵聽器 var vm new vue watch lastname function 計算屬性 有快取機制 當依賴的元素,沒有改變就不會再重新計算,用之前計算的結...