我怎样才能纠正这个代码,同时使其更简单

问题描述:

我只是在Xcode的操场上测试一些代码,我试图学习如何使用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) 

如果定义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) 

使用=代替==导致一些错误。

不是测试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)