有什么方法来简化复杂的if else语句在swift?



我有一个很长的if else条件来将文本分配给UILabel。所以我正在寻找一个更好的选择/逻辑来编写更少的行数。以下是我的条件,

if numberOfTeachers == 4 && numberOfStudents == 27 {
if String(interval.day! + 1) == "1" {
self.daysLabel.text = "1st"
self.testLabel.isHidden = true
self.subjectLabel.text = "Physics"
self.dayTitleLabel.text = "Today is your first day"
} else if String(interval.day! + 1) == "2" {
self.daysLabel.text = "2nd"
self.testLabel.isHidden = true
self.subjectLabel.text = "Chemistry"
self.dayTitleLabel.text = "Today is your Second day"
} else if String(interval.day! + 1) == "3" {
self.daysLabel.text = "3rd"
self.subjectLabel.isHidden = true
self.unitLabel.text = "Mathematics"
self.dayTitleLabel.text = "Today is your Third day"}  
else if String(interval.day! + 1) == "4" {
self.daysLabel.text = "4th"
self.testLabel.isHidden = false
self.subjectLabel.text = "Physics"
self.dayTitleLabel.text = "Today is your fourth day"      }
else if numberOfTeachers == 4 && numberOfStudents == 28 {

} else if numberOfTeachers == 4 && numberOfStudents == 29 {

} else if numberOfTeachers == 4 && numberOfStudents == 30 {

} else if numberOfTeachers == 5 && numberOfStudents == 27 {

} else if numberOfTeachers == 5 && numberOfStudents == 28 {

} else if numberOfTeachers == 5 && numberOfStudents == 29 {

} else if numberOfTeachers == 5 && numberOfStudents == 30 {

} else if numberOfTeachers == 6 && numberOfStudents == 27 {

} else if numberOfTeachers == 6 && numberOfStudents == 28 {

} else if numberOfTeachers == 6 && numberOfStudents == 29 {

} else if numberOfTeachers == 6 && numberOfStudents == 30 {

} else if numberOfTeachers == 7 && numberOfStudents == 27 {

} else if numberOfTeachers == 7 && numberOfStudents == 28 {

} else if numberOfTeachers == 7 && numberOfStudents == 29 {

} else if numberOfTeachers == 7 && numberOfStudents == 30 {

}

在每个if条件中至少还有4个条件,如(4,27),(4,28),(5,27),(5,28)....等等。所以整个条件变得太长了

您可以像这样嵌套if条件:

if numberOfTeachers == 4
{
if numberOfStudents == 29 {}
else if ...
}
else if ...

您也可以使用switch语句,这对于长链的if-else是一个很好的选择:

switch numberOfTeachers
{
case value 4:
// handle number of students
case value 5:
...
default:
// error?
}

编辑正如Martin R所指出的,人们也可以使用:

switch (numberOfTeachers, numberOfStudents)
{
case (4, 27):
// handle number of students
case (5, 28):
...
default:
// error?
}

最新更新