Swift返回类型澄清
我看到一个Swift函数编写如下:
func calculation(imageRef: CGImage) -> (red: [UInt], green: [UInt], blue: [UInt]) { ... ... }
我需要知道上面函数中的返回类型是什么。 我无法将它与任何已知类型联系起来,以及它与Objective-C中的等价物有什么关系? 将此函数转换为Objective-C的方法是什么?
这个函数正在返回,这是一个元组 。
元组可以在一个对象中保存各种类型,但与数组不同,您不能向其添加或删除对象。
来自Apple Developer Swift指南:
元组将多个值分组为单个复合值。 元组中的值可以是任何类型,并且不必彼此具有相同的类型。
Objective-C中不存在元组。 您可以在此处找到有关它的更多信息。
这叫Tuple
在这里学习
它允许在单个变量下对多个值进行分组。
目标c不支持元组。 在objc中你必须使用dictionary
,你必须使用键red
, green
和’ blue
与数组作为值
func calculation(imageRef: CGImage) -> (red: [UInt], green: [UInt], blue: [UInt]) { ... ... }
上面的方法返回元组 (一组可以在Swift中使用的不同值)。
您还可以返回没有命名参数的 元组 :
func calculation(imageRef: CGImage) -> ([UInt], [UInt],[UInt]) { ... ... }
您可以像这样访问返回值(对于未命名的元组参数):
let returnedTuple = calculation(imagRef) print(returnedTuple.0) //Red print(returnedTuple.1) //Green print(returnedTuple.2) //Blue
或(对于命名元组参数):
let returnedTuple = calculation(imagRef) print(returnedTuple.red) //Red print(returnedTuple.green) //Green print(returnedTuple.blue) //Blue
Objective-C中没有元组的等价。
此方法返回一个元组
func calculation(imageRef: CGImage) -> (red: [UInt], green: [UInt], blue: [UInt]) { return ([],[],[]) }