2018.04.27
1. 带泛型限制的枚举变量不能使用'=='进行if条件判断, 而要使用if case表达式
以下代码定义了一个
Animal
枚举,它的变量使用'=='进行if条件判断是没有任何问题的。
enum Animal {
case lion
case cat
case dog
}
var animal = Animal.lion
if animal == Animal.lion { print(animal) } // prints 'lion'
但是,如果定义的是一个带泛型的枚举变量,那问题就来了。
enum Reuslt<value> {
case success(value)
case fail
}
var reuslt = Reuslt.success("success!")
如果使用'=='进行if条件判断,将会报错
Binary operator '==' cannot be applied to operands of type 'Reuslt<String>' and '_'
, 个人理解是:带泛型限制的枚举变量不能使用'=='进行if条件判断
。
ifcase.jpeg
所以,如果带泛型的枚举进行if条件判断的话,正确的写法是:
var reuslt = Reuslt.success("success!")
if case .success(let successTips) = reuslt { print(successTips) } // prints 'success!'
reuslt = Reuslt.fail
if case .fail = reuslt { print(reuslt) } // prints 'fail'