我怎样才能纠正这个代码,同时使其更简单
问题描述:
我只是在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)
答
如果定义hours
和minutes
这样,他们将永远是零所以不需要检查。你必须将它们声明为可选项。和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)