【问题标题】:how can i correct this code while making it simpler我怎样才能更正此代码,同时使其更简单
【发布时间】:2017-11-17 06:58:30
【问题描述】:

我只是在 Xcode 的 Playground 中测试了一些代码,并且正在尝试学习如何使用 if 语句。另外我该如何更正此代码?编译时出现几个错误。其中之一是“无法赋值:'&&' 返回不可变值”。是否有可能在使代码正确的同时使代码更易读和更简单?

我写的代码:

var minutes = 10

var name = "Marcus"

var hours = 2

var status : String = " "

if minutes = nil && hours = !nil {

    status = "\(name) spent \(hours) hrs online"

} else if minutes = !nil && hours = nil {

    status = "\(name) spent \(minutes) mins online"

} else if minutes = !nil && hours = !nil {

    status = "\(name) spent \(hours) hrs & \(minutes) mins online"

}

print(status)

【问题讨论】:

    标签: swift string variables if-statement int


    【解决方案1】:

    如果您像这样定义hoursminutes,它们将永远不会为零,因此无需检查。您必须将它们声明为可选项。 switch 提供了一个干净的解决方案来满足您的需求:

    var hours: Int? = 2
    var minutes : Int? = 10
    var name = "Marcus"
    
    var status = ""
    switch (hours, minutes) {
    case (nil, nil):
        status = "both hours and minutes cannot be nil"
    case (_, nil):
        status = "\(name) spent \(hours!) hrs online"
    case (nil, _):
        status = "\(name) spent \(minutes!) mins online"
    default:
        status = "\(name) spent \(hours!) hrs & \(minutes!) mins online"
    }
    
    print(status)
    

    【讨论】:

      【解决方案2】:

      使用= 而不是== 会导致一些错误。

      当变量不是可选时,测试nil 也不会触发警告。

      下面是一些编译代码,您现在可以在其中玩转逻辑:

      var minutes: Int? = 10
      var name: String? = "Marcus"
      var hours: Int? = 2
      var status : String = "Hello"
      
      if minutes == nil && hours != nil {
          status = "\(name) spent \(hours) hrs online"
      } else if minutes != nil && hours == nil {
          status = "\(name) spent \(minutes) mins online"
      } else if minutes != nil && hours != nil {
          status = "\(name!) spent \(hours!) hrs & \(minutes!) mins online"
      }
      
      print(status)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多