Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift-defer-picularity:为什么case:defer中的代码在开关作用域结束之前被调用?_Swift - Fatal编程技术网

swift-defer-picularity:为什么case:defer中的代码在开关作用域结束之前被调用?

swift-defer-picularity:为什么case:defer中的代码在开关作用域结束之前被调用?,swift,Swift,在我们跌入酒吧场景之前到达baz()。 这是意料之中的事,还是编译器博克? 我希望baz()在开关结束时被调用 范围还是功能范围 案例的结尾:块是该块作用域的结尾。。。fallthrough语句不维护范围 考虑以下几点: case .foo: defer { baz() } fallthrough case .bar: 输出将是: 一, 推迟 二, 外部延迟 现在,考虑一下: defer { print("outer deferred&q

在我们跌入酒吧场景之前到达baz()。 这是意料之中的事,还是编译器博克? 我希望baz()在开关结束时被调用
范围还是功能范围

案例的结尾:块是该块作用域的结尾。。。
fallthrough
语句不维护范围

考虑以下几点:

case .foo:
    defer {
       baz()
    }
    fallthrough
case .bar:
输出将是:

一,

推迟

二,

外部延迟

现在,考虑一下:

    defer { print("outer deferred") }

    let t = 1

    switch t {
    case 0:
        print("0")
    case 1:
        print("1")
        defer { print("deferred") }
        fallthrough
    case 2:
        print("2")
    default:
        print("default")
    }
延迟{打印(“外部延迟”)}
设t=1
开关t{
案例0:
打印(“0”)
案例1:
让str=“你好”
打印(“1”)
延迟{打印(“延迟”)}
失败
案例2:
打印(“2”)
打印(str)//
    defer { print("outer deferred") }

    let t = 1

    switch t {
    case 0:
        print("0")
    case 1:
        let str = "hello"
        print("1")
        defer { print("deferred") }
        fallthrough
    case 2:
        print("2")
        print(str)        // <-- error
    default:
        print("default")
    }