我假设你知道这种用法:
let cAndL: [(NSColor, CGFloat)] = [(NSColor.redColor(), 0.0), (NSColor.greenColor(), 1.0)]
let gradient = NSGradient(colorsAndLocations: cAndL[0], cAndL[1])
不幸的是,Swift 没有为我们提供一种将数组赋予可变参数函数的方法。
还有第二部分。如果某些 API 声明UnsafePointer<T>
为数组,您可以创建一个 T 的 Swift 数组,并将其直接传递给 API。
let colors = [NSColor.redColor(), NSColor.greenColor()]
let locations: [CGFloat] = [0.0, 1.0]
let gradient2 = NSGradient(colors: colors, atLocations: locations, colorSpace: NSColorSpace.genericRGBColorSpace())
如果你想使用Array
of ( NSColor
, CGFloat
),你可以这样写:
let gradient3 = NSGradient(colors: cAndL.map{$0.0}, atLocations: cAndL.map{$0.1}, colorSpace: NSColorSpace.genericRGBColorSpace())