> On Jan 2, 2016, at 11:48 AM, Sebastian Mecklenburg via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I don’t think it’s confusing, I read ‘defer’ a ‘do it later’ and that’s just 
> what it does. And the deferred calls are not always necessary so they can’t 
> always be placed at the end.

Can you be more specific about "deferred calls are not always necessary"? Do 
you mean that you could, for instance, place an if in front of the defer? If so 
one could do the same with always, of course. I'll use your example, slightly 
expanded, to illustrate

> func testDefer(x: Int) {
>    defer {print("deferred call1")}
>    if x > 1 { defer {print("deferred call2")} }
    print("non-deferred call")
> }

I would rewrite this as:

    func testAlways(x: Int) {
        print("non-deferred call")
        always {
            print("deferred call1")
            if x > 1 print("deferred call2")
        }
    }

Which is 100% equivalent to your example, but works precisely as you would 
expect without needing to "be aware" of any "logical consequence"s. The code 
runs exactly as it appears.

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

Reply via email to