元组(tuple
) 是 Swift 的一种数据结构,可以理解为匿名的 struct
。
元组可以是参数,返回值,也可以是属性类型,合理使用元组可以使代码更简洁:
extension UIColor {
var rgba: (r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) {
var r: CGFloat = 0
var g: CGFloat = 0
var b: CGFloat = 0
var a: CGFloat = 0
getRed(&r, green: &g, blue: &b, alpha: &a)
return (r: r, g: b, b: b, a: a)
}
}
为 UIColor
增加一个属性 rbga
,用于获取颜色的 RGBA 值:
let rgba = UIColor.red.rgba
print("r: \(rgba.r), g: \(rgba.g), b: \(rgba.b), a: \(rgba.a)")
如果没有元组这个数据结构,就需要使用传统的 struct
,写法如下:
extension UIColor {
struct RGBA {
let r: CGFloat
let g: CGFloat
let b: CGFloat
let a: CGFloat
}
var rgba: RGBA {
var r: CGFloat = 0
var g: CGFloat = 0
var b: CGFloat = 0
var a: CGFloat = 0
getRed(&r, green: &g, blue: &b, alpha: &a)
return RGBA(r: r, g: b, b: b, a: a)
}
}
Swift 是强类型语言,这意味着即使元组和结构体的定义一样,这两者也是不能混用的,编译器会报类型不匹配的错误。