Hi,

The following code works fine. The property `a` is stored twice. But
it don't enter infinite loop.

    class Foo {
        var a: Int = 0 {
             didSet {
                 a = a + 1
             }
        }
    }

    let foo = Foo()
    foo.a = 2
    print(foo.a) // output 3


Regards

--adel


在 Mon, 05 Sep 2016 00:27:16 +0800,Gerard Iglesias <gerard_igles...@me.com> 写道:

Hi,

didSet is called as soon as the property is stored… Excepted when the value is stored in the initialiser code.

For me it is completely predictable that your code enter an infinite loop

Regards


On 4 Sep 2016, at 17:11, adelzhang via swift-users <swift-users@swift.org> wrote:

Thanks for reply.

How does Swift choose *rules* as you said?

Swfit encourage to override the property observer. But when we change the own property in Child class's `didSet` observer, that would cause infinite loop:

    class Base {
        var a: Int = 0
    }

    class Child : Base {
        override var a: Int {
            didSet {
                 a = a + 1
            }
        }
     }

     let child = Child()
     child.a = 3

Any differcen with situation 1?




_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to