根据apple发布的swift编程语言(Swift 3.0.1) iBook,比较运算符也适用于元组,只要它们不包含布尔值.所以给出以下声明
let t1 = (1, true)
let t2 = (1, true)
Run Code Online (Sandbox Code Playgroud)
以下句子按预期抛出错误
t1 <= t2
Run Code Online (Sandbox Code Playgroud)
然而
y1 == t2
Run Code Online (Sandbox Code Playgroud)
评估为真,这似乎与上述说法相矛盾.有任何想法吗?
Bool 确实符合Equatable,但不符合Comparable通过实施的Swift Evolution提案
可以比较到6的元组
==)和不等式(!=),假设所有元组成员类型都符合Equatable<=),小于(<),大于或等于(>=),大于(>),假设所有元组成员类型符合Comparable现在,Int和Bool两个符合Equatable,而只有Int符合Comparable.因此,比较元组
let t1 = (1, true) // inferred type: (Int, Bool)
let t2 = (1, true)
Run Code Online (Sandbox Code Playgroud)
因为两个成员都符合,所以平等/不平等是有效的Equatable.
t1 == t2 // true
t1 != t2 // false
Run Code Online (Sandbox Code Playgroud)
但是,使用blueprinted的运算符Comparable无效(因为不存在这样的运算符Bool),因为两个tupes的第二个成员都有一个不符合的类型Comparable.
关于OP的评论:
似乎合乎逻辑.但是,这本书列出了比较操作
==,!=,>,<,等再索赔.官方出版商是苹果.
由于所有元组成员都具有符合的类型,所以Equatable(==,!=)中的蓝色运算符可用于元组6的元组比较Equatable.但这并不意味着,然而,他们有自动获得在blueprinted运营商Comparable(<=,<,>=,>),因为类型可以遵循Equatable,但不是Comparable.
该Comparable协议,不过,从继承Equatable,因此,如果一个元组的成员都符合Comparable(元组达元数6),那么所有六个比较符(==,!=,<=,<,>=,>),都可以到元组,前两者通过协议的继承Equatable,后四个通过Comparable它自己(因为符合后者的类型也必须符合前者,通过协议继承).
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |