Swift4.0学习记录

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 {
    case success(value)
    case fail
}

var reuslt = Reuslt.success("success!")

如果使用'=='进行if条件判断,将会报错Binary operator '==' cannot be applied to operands of type 'Reuslt' 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'

你可能感兴趣的:(Swift4.0学习记录)