【发布时间】:2015-04-03 18:04:55
【问题描述】:
我想在 Swift 中为(例如)两个值的元组编写一个扩展。比如我想写这个swap方法:
let t = (1, "one")
let s = t.swap
使得s 的类型为(String, Int),值为("one", 1)。 (我知道我可以很容易地实现 swap(t) 函数,但这不是我感兴趣的。)
我可以这样做吗?我似乎无法在 extension 声明中写入正确的类型名称。
另外,我想答案是一样的,我可以让一个 2 元组采用给定的协议吗?
【问题讨论】:
-
Swift documentation for Types 区分命名类型和复合类型。命名类型可以扩展,但元组(和函数)是复合类型。
-
谢谢,马丁。看起来这是一个明确的“不”,那么。你能把它变成一个答案让我接受吗?
-
使用元组可以做的最多的自定义是命名参数并为其使用
typealias。对于更复杂的事情,您应该使用structs 或定义全局函数(可能使用泛型) -
man...能够在类型别名上定义扩展名将是令人兴奋的...我准备接受某种形式的强制(使用与元组中声明的相同的命名或其他) ...
标签: swift tuples swift-extensions swift-protocols