swift - 如何在 Swift 2 中避免多个 if let 语句

标签 swift option-type

我从 swift 着手,试图让我的代码简洁。

我有一个自定义的 init 方法

var title, initMainText, initBtnTitle: String?

...

init(title: String?, mainText: String?, buttonTitle: String?) {
   if let t = title {
      self.title = t
   }
   if let t = mainText {
      self.initMainText = t
   }
   if let t = buttonTitle {
      self.initBtnTitle = t
   }
   ...
}

...

是否有更简洁的方法来解包所有这些条件?

最佳答案

有几种解决方法:

  • 守卫
  • 多个 let/var 在同一个 if
  • 具有默认值的参数
  • 三元条件运算符
  • 无合并运算符
  • 不要在 init 中接受可选参数(如 nhgrif 所建议)

看你的例子似乎

  • self.title
  • self.initMainText
  • self.initBtnTitle

是可选的,所以你可以简单地写:

init(title: String?, mainText: String?, buttonTitle: String?) {
   self.title = title
   self.initMainText = mainText
   self.initBtnTitle = buttonTitle
   ...
}

关于swift - 如何在 Swift 2 中避免多个 if let 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054422/

相关文章:

swift - 21如何计算! (21 阶乘)快速?

ios - 使用 firebase 云消息传递中的 swift 无法将通知接收到 iPhone

ios - 动态生成 Eureka 表单行

swift - 根据星期几显示文本

Java 8 可选的 asSet()

rust - 如何在 Rust 中正确实现 Error::cause?

c++ - 为什么移动 std::optional 不会重置状态

ios - 如何在 Swift 2 [MapKit] 中从 map 中删除注释

macos - 在 OSX 中,访问(可选?) NSView 子类的属性 "identifier"会导致访问错误

haskell - 将 Maybe 包装在 WriterT 中以添加日志记录