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<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'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,906评论 1 10
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,499评论 1 24
  • 标签(空格分隔): 未分类 基础(相关概念) 1.元祖 元组(tuples)把多个值组合成一个复合值。元组内的值可...
    一生信仰阅读 626评论 0 0
  • 你的一个想法,可能因人而异,折射出千百种回应。 前不久日本出差,因为之前去过两次,时间间隔不是很大,自己没什么可买...
    夜心婉阅读 328评论 0 1
  • 2018年4月20日 今天是学校开放日,峰此刻在米国,可是早早的他就说:周五我们学校家长开放日,你有空就去看一下吧...
    幸运花开随笔阅读 339评论 2 0