为什么这不起作用?
enum SwitchStatus {
case on
case off
}
var switchStatus: SwitchStatus = .off
func flipSwitch() -> SwitchStatus {
return !switchStatus
}
我在
return !switchStatus
处得到这个错误:无法将“switchstatus”类型的值转换为所需的参数类型“bool”
如果我说return,它为什么会期望
Bool
? 最佳答案
!
是“logical not”运算符,并接受一个Bool
参数,因此
编译器已经在!switchStatus
表达式上抱怨了。
您可以通过定义
prefix func !(arg: SwitchStatus) -> SwitchStatus
函数,但实际上我要做的是定义一个
!
方法,类似于
SwitchStatus
方法:enum SwitchStatus {
case on
case off
mutating func flip() {
switch self {
case .on: self = .off
case .off: self = .on
}
}
}
那你就可以了
var switchStatus: SwitchStatus = .on
switchStatus.flip() // Switch if off ...
switchStatus.flip() // ... and on again.