美文网首页swift知识小集
Swift return 陷阱, Swift return后还会

Swift return 陷阱, Swift return后还会

作者: 小杰杰杰 | 来源:发表于2020-05-12 10:42 被阅读0次

    我们来看下边一个例子:

    func test() -> Bool {
        print("1 before return")
        return false
        print("1 after return")
    }
    
    func test2() {
        print("2 before return")
        return
        print("2 after return")
    }
    
    test()
    test2()
    

    输出:

    1 before return
    2 before return
    2 after return
    

    我们发现print("2 after return")return 后边被执行了

    这是因为Swift不需要分号(; 分号是可选的),这使Swift编译器可以自动推断下一行是换行还是旧行的补全。 print()是一个返回void的函数。 因此语句:return print(“ something”)是有效的。

    func test2() {
        print("2 before return")
        return
        print("2 after return")
    }
    缺省了 返回类型 -> Void
    实际上为:
    func test2() -> Void {
      print("2 before return")
      return 
      print("2 after return")
    }
    

    所以

    return
    print("Something")
    

    可以推导为:return print("Something")
    最终:

    func test2() -> Void {
      print("2 before return")
      return print("2 after return")
    }
    

    添加分号可以解决:

    func test2() -> Void {
      print("2 before return")
      return;
      print("2 after return")
    }
    

    如果在返回行后放置值类型,也会看到错误,你可以了解更多信息:

    func test2() {
      print("2 before return")
      return
      2
    }
    

    error: Unexpected non-void return value in void function

    相关文章

      网友评论

        本文标题:Swift return 陷阱, Swift return后还会

        本文链接:https://www.haomeiwen.com/subject/ducqmhtx.html