【发布时间】:2020-05-10 11:30:27
【问题描述】:
我在 Swift Playground 中工作,我正在使用多个切换来确定一个动作是真还是假。从那里,它们的特定组合将显示分配给每个组合的数字。因为我有 4 个切换,所以我决定做 16 个 if else 语句,但这确实减慢了我的操场速度。有没有办法使用更少的语句?
Toggle(isOn: $washingHandsToggle) {
Text("Washing Hands Regularly")
}.padding(40)
Toggle(isOn: $wearingMaskToggle) {
Text("Wearing a Protective Mask")
}.padding(40)
Toggle(isOn: $coverMouthToggle) {
Text("Cover your mouth and nose when coughing or sneezing")
}.padding(40)
Toggle(isOn: $quarantineToggle) {
Text("Quarantine")
}.padding(40)
if !washingHandsToggle && !wearingMaskToggle && !coverMouthToggle && !quarantineToggle {
self.r0 = 1.0
}else if !washingHandsToggle && !wearingMaskToggle && coverMouthToggle && !quarantineToggle {
self.r0 = 2.0
}else if washingHandsToggle && !wearingMaskToggle && !coverMouthToggle && !quarantineToggle {
self.r0 = 3.0
}else if !washingHandsToggle && wearingMaskToggle && !coverMouthToggle && !quarantineToggle {
self.r0 = 4.0
}else if washingHandsToggle && !wearingMaskToggle && coverMouthToggle && !quarantineToggle {
self.r0 = 5.0
}else if !washingHandsToggle && wearingMaskToggle && coverMouthToggle && !quarantineToggle {
self.r0 = 6.0
}else if washingHandsToggle && wearingMaskToggle && !coverMouthToggle && !quarantineToggle {
self.r0 = 7.0
}else if washingHandsToggle && wearingMaskToggle && coverMouthToggle && !quarantineToggle {
self.r0 = 8.0
}else if !washingHandsToggle && !wearingMaskToggle && !coverMouthToggle && quarantineToggle {
self.r0 = 9.0
}else if !washingHandsToggle && !wearingMaskToggle && coverMouthToggle && quarantineToggle {
self.r0 = 10.0
}else if washingHandsToggle && !wearingMaskToggle && !coverMouthToggle && quarantineToggle {
self.r0 = 11.0
}else if !washingHandsToggle && wearingMaskToggle && !coverMouthToggle && quarantineToggle {
self.r0 = 12.0
}else if washingHandsToggle && !wearingMaskToggle && coverMouthToggle && quarantineToggle {
self.r0 = 13.0
}else if !washingHandsToggle && wearingMaskToggle && coverMouthToggle && quarantineToggle {
self.r0 = 14.0
}else if washingHandsToggle && wearingMaskToggle && !coverMouthToggle && quarantineToggle {
self.r0 = 15.0
}else {
self.r0 = 16.0
}
【问题讨论】:
-
首先,我会说它作为 Switch 语句看起来会更好。 r0 值有什么作用?您能否为每个切换分配一个值,例如 1、2、4、8 并将它们加起来,这将为您提供每个组合的唯一结果?
-
看起来你希望他们没有采取任何预防措施时的最低值,以及他们良好时的最高值????????????。你有 4 个布尔值,有 16 种组合。查看 swift 的按位数据。基本上你想把每个布尔值当作一个位,所以 0000,直到 1111,然后你的数字就是那个二进制数的十进制转换。
-
@PeterParker 如果想使用特定数字(如 1.4、0.7、4.7)而不是 1-16,我应该怎么做
标签: ios swift swiftui swift-playground