// Swift 4, Xcode 9 beta 1, default toolchain import Foundation
var d1 = [Int : String]() d1[1, default: .init()].append("a") d1[2, default: .init()].append("b") d1[3, default: .init()].append("c") d1[1, default: .init()].append("d") print(d1) // [2: "b", 3: "c", 1: "ad"] as expected. var d2 = [Int : NSMutableString]() d2[1, default: .init()].append("a") d2[2, default: .init()].append("b") d2[3, default: .init()].append("c") d2[1, default: .init()].append("d") print(d2) // [:] but why? I know that NSMutableString is a reference type and String is a value type and that the default argument is an @autoclosure. I also know that the newly created NSMutableString instance is just released immediately after the append call, without being stored and retained in the Dictionary's storage. Is this the intended behavior and if so, please let me better understand how/why. /Jens
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users