[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