首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“返回”和“返回”可以互换吗?

“返回”和“返回”可以互换吗?
EN

Stack Overflow用户
提问于 2019-07-08 10:49:44
回答 3查看 1.8K关注 0票数 0

我不完全理解,我可以交替使用returnreturn nil吗?returnreturn nil是否有相似的返回类型?

下面是代码的两个实例。

一审:

代码语言:javascript
复制
func naming(name: Int) -> String? {
    switch name {
        case 0: return "Neo"
        case 1: return "Matrix"
        default: return nil
    }
}
naming(name: 2)   // nil

二审:

代码语言:javascript
复制
guard let video = try? avplayer else {
    print("Unable to load a movie")
    return
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-08 10:55:36

不,他们不一样。

当您需要返回一个值时,会使用返回nil,但该值可以是可选的。所以在你的例子中:

代码语言:javascript
复制
func naming(name: Int) -> String? {
    switch name {
        case 0: return "Neo"
        case 1: return "Matrix"
        default: return nil
    }
}

函数期望返回一个String或一个nil值,因此是String?。最后的问号表示String是可选的。当您调用naming(name: 2)时,它调用switch语句,而找不到与数字2对应的值,因此默认返回nil

在第二个示例中使用return只会阻止函数的其余部分执行。所以:

代码语言:javascript
复制
function loadVideo() {
    guard let video = try? avplayer else {
        print("Unable to load a movie")
        return
    }
    print("hello")
}

如果avplayer变量为零,则guard语句将执行其else语句,并输出Unable to load a movie,然后从函数中输出return。这将防止hello被打印。

票数 3
EN

Stack Overflow用户

发布于 2019-07-08 10:57:57

不,两者不一样!

没有任何参数的return返回Void。这种形式的return语句只能与返回Void的函数一起使用。

一旦执行return语句,函数就会退出,并且不再执行函数中的代码。

票数 3
EN

Stack Overflow用户

发布于 2019-07-08 11:03:08

对你问题的简单回答是否定的

在你的例子中

代码语言:javascript
复制
func naming(name: Int) -> String? /* reference */ {
    switch name {
        case 0: return "Neo"
        case 1: return "Matrix"
        default: return nil
    }
}

/*引用*/您应该在这里返回可选字符串--如果您决定只返回没有值的字符串,则可能是字符串值或零--您将得到编译错误

  • 在第二个例子中,我想让大家想象一下,这是一个空函数,可以更清楚地理解它。
代码语言:javascript
复制
func naming(name: Int) {
    switch name {
        case 0: return "Neo" /* reference */
        case 1: return "Matrix" /* reference */
        default: return nil /* reference */
    }
}

如果您尝试从这个函数返回任何值,并且您可以在任何时候返回而不依赖于您的业务,那么您应该在/*引用上得到编译错误*/

  • 因此,考虑到守卫let是一个用于安全的空函数,如果它有一个值,请检查它的值,它将使值/*视频*/在下一行中可用,否则它将从函数返回,并且不会执行函数代码的其余部分。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56933322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档