[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