代码之家  ›  专栏  ›  技术社区  ›  Devin Haslam

guard是否在swift中复制变量

  •  0
  • Devin Haslam  · 技术社区  · 7 年前

    在swift中,可以使用guard语句展开可选值

    guard let foo = foo else { return nil }

    这份声明是复印件吗 foo ? 换句话说,如果 很大吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Shehata Gamal    7 年前

    实际上这取决于 foo e、 十 class 类型不会创建副本 struct

    guard 这不是一个神奇的关键词 if not 以一个字呈现

        2
  •  1
  •   Community Mohan Dere    6 年前
     guard let foo = foo else { return nil }
    

    如果foo非常大,这种说法可能会很昂贵吗?

    if foo != nil {
        let foo = foo!
        // everything else here
    }
    

    他在说 foo! 打开可选的“昂贵”?不管你的答案是什么,对我来说都是一样的 guard let foo = foo 同样的道理:他们测试 nil 全部的 他们都有。一个只是另一个的语法糖分。

        3
  •  0
  •   Abdallah Eid    7 年前

    1-仅检查此foo是否不等于nil
    在这种情况下,您可以检查foo是否为nil

    if foo != nil {
        // do you work here
    }
    

    2-从foo处获取信息

    -如果foo是一个类,那么它就是一个引用类型。因此将不存在副本,并创建对此实例的引用

    你也可以读这个 answer 看看你应该在swift中选择struct还是class