Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在简化代码的同时更正此代码_Swift_String_Variables_If Statement_Int - Fatal编程技术网

Swift 如何在简化代码的同时更正此代码

Swift 如何在简化代码的同时更正此代码,swift,string,variables,if-statement,int,Swift,String,Variables,If Statement,Int,我刚刚在Xcode的操场上测试了一些代码,我正在尝试学习如何使用if语句。还有,如何更正此代码?我在编译它时遇到了几个错误。其中之一是“无法赋值:”&&“返回不可变值”。是否有可能在使代码正确的同时使代码更可读、更简单 我编写的代码: var minutes = 10 var name = "Marcus" var hours = 2 var status : String = " " if minutes = nil && hours = !nil { sta

我刚刚在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)

如果您这样定义
小时
分钟
,它们将永远不会为零,因此无需检查。您必须将它们声明为可选项。而
开关
为您提供了一个干净的解决方案:

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)