我遵循教程,其中一个参数是bool:
func fadeImageView(imageView: UIImageView, toImage: UIImage, showEffects:Bool) {
}
但是在函数体中提供bool值时,值为:
self.view.alpha = showEffects ? 1.0: 0.0
我假设bool只能有真值或假值。这是什么? 1.0:0.0意味着什么?
答案 0 :(得分:2)
self.view.alpha
不是bool属性。它是CGFloat
。
您尚未将Bool
指定给alpha属性。示例中的三元运算符表示“如果showEffects
为true
,则将alpha 1.0 ,否则 0.0 ”
答案 1 :(得分:1)
这里有两件事情,所以我会回答他们两个。
view.alpha
不是Bool
,而CGFloat
的有效值介于1.0
和0.0
之间。例如,0.5
的alpha为50%不透明。
?:
是一个特殊的运营商。与使用2个值执行操作的+
或*
不同,?:
执行具有3个值的操作。这就是它被称为ternary operator
的原因。第一个值是条件,将被评估为true
或false
。如果条件为true
,则第二个值是操作的结果。如果条件为false
,则第三个值是操作的结果。
<conditional value> ? <when true value> : <when false value>
相当于:
func ternaryOperation(_ conditionalValue: Bool, _ whenTrueValue: CGFloat, _ whenFalseValue: CGFloat) -> CGFloat {
if (conditionalValue) {
return whenTrueValue
} else {
return whenFalseValue
}
}
…
self.view.alpha = ternaryOperation(showEffects, 1.0, 0.0)
答案 2 :(得分:0)
这是ternary conditional operator。如果a ? b : c
评估为真,则b
会返回a
,否则会返回c
。