我有这种if-else条件。
if UIDevice.current.iPad {
if APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc {
theImage.contentMode = .scaleAspectFill
} else {
theImage.contentMode = .scaleToFill
}
} else {
theImage.contentMode = .scaleAspectFill
}
如何使用三元运算符代替if-else条件。
我引荐了this链接..但没有帮助
答案 0 :(得分:1)
在内部,如果:
if APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc {
theImage.contentMode = .scaleAspectFill
} else {
theImage.contentMode = .scaleToFill
}
礼物:
theImage.contentMode = (APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc) ? . scaleAspectFill : . scaleToFill
现在,如果我们在以下情况下达到最高级别:
theImage.contentMode = UIDevice.current.iPad ? insideIf : . scaleAspectFill
完整代码:
theImage.contentMode = UIDevice.current.iPad ? (APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc) ? . scaleAspectFill
: . scaleToFill
: . scaleAspectFill
那真的不是可重做的。
但是
if UIDevice.current.iPad {
if APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc {
theImage.contentMode = .scaleAspectFill
} else {
theImage.contentMode = .scaleToFill
}
} else {
theImage.contentMode = .scaleAspectFill
}
可能会转换为:
if UIDevice.current.iPad && !(APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc) {
theImage.contentMode = .scaleToFill
} else {
theImage.contentMode = .scaleAspectFill
}
那是较短的,但可能更难阅读。
如果是三元,则
theImage.contentMode = UIDevice.current.iPad && !(APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc) ? . scaleToFill : . scaleAspectFill
我认为?保留您的版本(或者如果我只使用一个版本,请保留版本)。尽管如此,编译器仍会进行优化,如果您能迅速了解其原因和作用,则两个月后更容易对其进行修复/修改。
答案 1 :(得分:0)
您可以将其分解为
theImage.contentMode = APIClient.shared.whiteLabel == .gld_default || APIClient.shared.whiteLabel == .abc ? .scaleAspectFill : .scaleToFill