相关疑难解决方法(0)

如果Swift'guard'语句必须退出范围,范围的定义是什么?

我对代码块或"范围"的定义感到困惑.苹果公司的卫士文件说:保护声明的其他部分......

"必须转移控制以退出出现保护声明的代码块."

其他在线消息来源称,守卫声明必须退出其存在的"范围".

所以请参考下面的示例代码:

func testGuardControlFlow () {

let x = 2
let y = 2

    func embededFunc () {

        if y == 2 {

            guard x == 1 else {
                print("oops, number is not 1")
                return
            }

            print ("from in embededFunc")

        }

        print ("I still want this to print even if x != 1")
    }

    embededFunc()
    print("Great, return still allows this to be printed.")

}

testGuardControlFlow()
Run Code Online (Sandbox Code Playgroud)

根据我目前对'范围'的理解,代码

if y == 2 {....}
Run Code Online (Sandbox Code Playgroud)

创建一个新的范围,即{}之间.并且考虑到这个假设,后卫只会逃避这个范围.但事实并非如此.此实例中的Guard不会放置它所放置的函数,而不管它是否隐藏在if子句中.

我完全误解了"范围"的含义吗?范围是指方法中包含的代码吗?如果是这样,if语句中存在的'space'的正确术语是什么?

scope swift

12
推荐指数
1
解决办法
2762
查看次数

标签 统计

scope ×1

swift ×1