【发布时间】:2022-06-11 03:23:36
【问题描述】:
我有一个很长的 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)....等等。 所以这整个条件变得太长了。
【问题讨论】:
-
您可以使用嵌套的
ifs 或switches,这可能不会减少行数,但会避免重复并使代码更易于阅读。 -
你在警卫里面做什么?有时可以选择根本不使用
if或switch语句,而是直接从输入值计算结果(在这种情况下为numberOfTeachers和numberOfStudents)。 -
我喜欢@Felix 在这里的建议,也许更好的解决方案是计算教师与学生的比例,这将有助于减少逻辑序列中的行数?如果这在您的域中是不可能的并且您必须如此明确,那么实际上您必须尝试嵌套您的条件以减少重复。
-
这些语句的主体内部会发生什么?这可能会揭示一种可以简化的方式
-
@Alexander 在这些语句的正文中,我根据上述条件为三个标签分配不同的文本。
标签: swift if-statement