美文网首页
Swift4.0学习记录

Swift4.0学习记录

作者: RugaLuo | 来源:发表于2018-04-27 13:14 被阅读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<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'

相关文章

网友评论

      本文标题:Swift4.0学习记录

      本文链接:https://www.haomeiwen.com/subject/udpblftx.html