2015-09-04 36 views
0

我從此線程找到了代碼段:https://stackoverflow.com/a/24052094/2754218並在遊樂場中對其進行了測試。無法連接兩個字典

func +=<K, V> (inout left: [K: V], right: [K: V]){ 
    for (k, v) in right { 
    left[k] = v 
    } 
} 

var test = ["1": "a"] += ["2": "b"] 

代碼導致:Binary operator '+=' cannot be applied to two [String : String] operands.

什麼建議嗎?

SOLUTION:

感謝Eric的我創建一個函數與運算符 「+」:

func +<K, V> (left: [K: V], right: [K: V]) -> [K: V] { 
    var newDic = left 

    for (k, v) in right { 
    newDic[k] = v 
    } 

    return newDic 
} 

var toto = ["1": "a"] + ["2": "b"] 

回答

1

此功能不返回任何東西,它傳遞的第一個值作爲一個INOUT,這意味着它會改變左手對象本身:

var test = ["1": "a"] 

test += ["2": "b"] 

print(test) // ["2": "b", "1": "a"] 
+0

我的不好,我沒有足夠注意這段代碼。你是對的! –