[swift-users] Should Array's `append(_)` function cause `didSet`?

Zhao Xin owenzx at gmail.com
Fri Jul 7 20:39:22 CDT 2017


import Cocoa


struct Foo {

    var keys = ["z","y","x"]

    {

        didSet {

            keys.sort()

        }

    }



    init(keysAndValues:Dictionary<String, String>) {

        self.keys.append(contentsOf: keysAndValues.keys)

    }

}


let keysAndValues:Dictionary<String,String> = ["c":"c", "b":"b", "a":"a"]

var foo = Foo(keysAndValues: keysAndValues) // `let foo` is the same result


foo.keys.forEach { print($0) }

/*

 prints

 z

 y

 x

 b

 c

 a

*/


Above code doesn't call `didSet` in playground. My .swift file is similar
and didn't call `didSet` either. However, if without a struct, `didSet` is
called.


var keys = ["z","y","x"]

{

    didSet {

        keys.sort()

    }

}


let keysAndValues:Dictionary<String,String> = ["c":"c", "b":"b", "a":"a"]

keys.append(contentsOf: keysAndValues.keys)



keys.forEach { print($0) }

/*

 prints

 a

 b

 c

 x

 y

 z

 */



*Xcode 9.0 beta 2 (9M137d)*


*Apple Swift version 4.0 (swiftlang-900.0.45.6 clang-900.0.26)*

*Target: x86_64-apple-macosx10.9*


*macOS Sierra 10.12.5 (16F73)*



Zhao Xin



On Fri, Jul 7, 2017 at 11:52 PM, Jordan Rose <jordan_rose at apple.com> wrote:

> It definitely should. Can you show the code where it wasn’t being called?
>
> Thanks!
> Jordan
>
>
> On Jul 7, 2017, at 00:31, Zhao Xin via swift-users <swift-users at swift.org>
> wrote:
>
> Should Array's `append(_)` functions cause the array's `didSet`?
> In my own test, it did call `didSet` in Playground. But in .swift files,
> it didn't call.
>
> Is this a known bug or something? Which is correct?
>
> Xcode Version 9.0 beta 2 (9M137d)​
>
> swift --version
> Apple Swift version 4.0 (swiftlang-900.0.45.6 clang-900.0.26)
> Target: x86_64-apple-macosx10.9
>
>
> Zhao Xin
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170708/98de0341/attachment.html>


More information about the swift-users mailing list