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

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

概述我对代码块或“范围”的定义感到困惑.苹果公司的卫士文件说:保护声明的其他部分…… “must transfer control to exit the code block in which the guard statement appear.” 其他online sources说守卫声明必须退出它所存在的“范围”. 所以请参考下面的示例代码: func testGuardControlFlow 我对代码块或“范围”的定义感到困惑.苹果公司的卫士文件说:保护声明的其他部分……

“must transfer control to exit the code block in which the guard statement appear.”@H_419_3@

其他online sources说守卫声明必须退出它所存在的“范围”.@H_419_3@

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

func testGuardControlFlow () {let x = 2let 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()

根据我目前对’范围’的理解,代码@H_419_3@

if y == 2 {....}

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

我完全误解了“范围”的含义吗?范围是指方法中包含的代码吗?如果是这样,if语句中存在的’space’的正确术语是什么?@H_419_3@ 完全有可能做你想象的事情,它恰好不是那个特定的代码所做的. return始终退出方法,而不是本地范围.要做你想做的事,你可以使用标签,并打破:

func testGuardControlFlow () {    let x = 2    let y = 2    func embededFunc () {        breakLabel:        if y == 2 {            guard x == 1 else {                print("oops,number is not 1")                break breakLabel            }            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()

要添加到vadian’s answer:@H_419_3@

警卫强制您使用控制转移声明退出范围.有4个可供选择:@H_419_3@

> return并抛出两个退出函数/方法
> continue可以在循环中使用(while / for / repeat-while)
> break可用于循环(while / for / repeat-while)以退出直接范围.指定要中断的标签将允许您一次退出多个范围(例如,打破嵌套循环结构).使用标签时,break也可用于if范围.@H_419_3@

此外,您可以通过调用返回Never的函数来退出作用域,例如fatalError.@H_419_3@ 总结

以上是内存溢出为你收集整理的如果Swift’guard’语句必须退出范围,范围的定义是什么?全部内容,希望文章能够帮你解决如果Swift’guard’语句必须退出范围,范围的定义是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1047949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存