function rápida devolviendo una matriz

Estoy aprendiendo Swift y puedo entender cómo crear una function simple que toma una matriz y devuelve una matriz. Aquí está mi código:

func myArrayFunc(inputArray:Array) -> Array{ var newArray = inputArray // do stuff with newArray return newArray } 

El error rojo que obtengo es: La reference al tipo genérico 'Array' requiere arguments en <>

En Swift Array es un tipo genérico, por lo que debe especificar qué tipo de matriz contiene. Por ejemplo:

 func myArrayFunc(inputArray:Array<Int>) -> Array<Int> {} 

Si desea que su function sea genérica, utilice:

 func myArrayFunc<T>(inputArray:Array<T>) -> Array<T> {} 

Si no desea especificar el tipo o tener una function genérica, use Any tipo:

 func myArrayFunc(inputArray:Array<Any>) -> Array<Any> {} 

Depende de qué es exactamente lo que quieres hacer. Si desea una function especializada que tome una matriz de un tipo específico MyType, entonces podría escribir algo como:

 func myArrayFunc(inputArray: [MyType]) -> [MyType] { // do something to inputArray, perhaps copy it? } 

Si desea una function de matriz genérica, entonces debe usar generics. Esto tomaría una matriz de tipo genérico T y devolvería una matriz de tipo genérico U:

 func myGenericArrayFunc<T, U>(inputArray: [T]) -> [U] { } 

No hay tal cosa como una Array en Swift, pero hay matrices de un cierto tipo, por lo que debe darle a la function un tipo genérico, como en:

 func myArrayFunc<T>(inputArray:Array<T>) -> Array<T>{ // do what you want with the array } 

y luego llamarlo instanciando T en un tipo específico y pasando una matriz de ese tipo.

Gracias a todos (especialmente Kirsteins). Entonces, he creado este ejemplo que funciona bien y parece lógico:

 func myArrayFunc(inputArray:Array<String>) -> Array<String>{ var newArray = inputArray // do stuff with newArray return newArray } 

Prueba esto

 var test = doArray([true,true,true]) test.count func doArray(arr : [AnyObject]) -> [AnyObject] { var _arr = arr return _arr } 

Esto debería hacerlo:

 func myArrayFunc<T>(inputArray:Array<T>) -> Array<T> { var newArray = inputArray // do stuff with newArray return newArray } 

Usted declara el tipo genérico T , que es solo un marcador de position. Debido a que no tiene requisitos, T puede replacese por cualquier tipo (cuando se llama a la function). Entonces tu function podría llamarse así:

 myArrayFunc([1, 2, 3]) 

o esto:

 myArrayFunc(["a", "b", "c"]) 

La syntax preferida es generalmente [T] lugar de Array<T> , sin embargo. (aunque ambos son correctos)

 func myArrayFunc<T>(inputArray: [T]) -> [T] { var newArray = inputArray // do stuff with newArray return newArray }