如何让函数接受所有类型的数组

Jac*_*ack 3 arrays function ios swift

我是Swift的新手,我想知道如何使函数接受包含各种变量类型的数组.我希望函数只接受没有特定类型的'Array',但它会抛出错误.这是我的代码:

func length(arry arry: Array)
{

}
Run Code Online (Sandbox Code Playgroud)

我知道我必须在数组之后放一个<>但是我需要这个函数来普遍接受所有数组.

编辑: 每当我添加扩展名时,我都会遇到这些荒谬的错误.我的代码是:

//: Playground - noun: a place where people can play

import UIKit
extension Array {
var length: Int {
    return self.count
}
}
var arrY = ["Hello", 0]

for(var i = 0; i < length(arry: arrY); i++)
{
print(arrY[i]);
}

arrY.append(28);
var h = arrY.removeAtIndex(0);
print(h);
Run Code Online (Sandbox Code Playgroud)

我得到错误说:1在第十行扩展可能不包含存储的属性2在线11预期声明3在线十八预期声明谢谢,

插口

man*_*man 5

如果需要,可以编写通用函数:

func length<T>(arry arry: Array<T>)
{

}
Run Code Online (Sandbox Code Playgroud)

在Swift中,Apple引入了Generics您现在可以在Xcode 7和Objective-C上找到它的概念.此功能允许您定义Array或您正在使用的集合类中每个元素的类型.您可以定义泛型类或通用方法,如给定的示例.此功能使您能够以一种可以安全地使用不同类型的方式编写代码,同时利用类型安全的优势.例如,在我给出的示例中,它表示这length是一种将类型数组T作为输入的泛型方法.编写这样的方法,允许您编写一个能够接受不同类型的数组的方法.例如,下面的示例代码显示您可以对数组Int和数组使用相同的方法Double:

var arr = [13, 23, 32]
var arr2 = [12.3, 23.5, 13.14, 2.75]
var arr3 = ["foo", "boo"]
length(arr)
length(arr)
length(arr)
Run Code Online (Sandbox Code Playgroud)

有关泛型的更多信息,您可以在此链接上查看在线文档,和/或观看WWDC 2014的 Swift介绍视频,和/或阅读Swift编程语言的通用部分