【问题标题】:In Swift, can you pass nil as an input to a function?在 Swift 中,你可以将 nil 作为输入传递给函数吗?
【发布时间】:2015-03-10 20:09:01
【问题描述】:

我正在阅读很多关于如何不检查对象是否为零的文章。这是一个 objC 范式,它是一个糟糕的设计,很快就被淘汰了。所以我的问题是,根据下面的示例,您可以将“组”作为 nil 值传递吗?调用函数时是否会发生 nil 检查机制,从而无需实现 if(group==nil){..} ?

func deleteMembershipForGroup(group:GroupData){
}

【问题讨论】:

  • 您从哪里听说过“nil”是“Objective-C 范式”、“这是一个糟糕的设计”和“在 Swift 中它已被淘汰”? Java 有 'null','nil' 在很多情况下都非常有意义(尤其是在向 'nil' 发送消息方面),而 Swift 有可选项。

标签: objective-c oop swift design-patterns null


【解决方案1】:

是的! Thomas Kilian 是对的,它对我有用!然后,您将能够传递一个 nil 参数。您还会注意到,使用可选变量,它还会删除警告说变量“组”将始终为真。

func deleteMembershipForGroup(group:GroupData?){
   if let groupReal = group { <--- Warning gone!
   // not nil
   }
}

【讨论】:

  • 为什么要投反对票?我只想为托马斯所说的答案提供确认和额外信息
【解决方案2】:

你需要使用一个可选的:

func deleteMembershipForGroup(group:GroupData?){
  if let groupReal = group {
  // not nil
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2021-02-22
    • 1970-01-01
    • 2023-02-05
    • 2020-09-23
    相关资源
    最近更新 更多