/ / Как да имаме функция приема всички видове масиви - ios, масиви, swift, function

Как да имаме функция да приема всички видове масиви - IOS, масиви, бързина, функция

Аз съм нов за Суифт и се чудех как да го направяПравя функция да приема масив, който съдържа всички видове променливи. Искам функцията просто да приема "Array" без конкретен тип, но хвърля грешка. Ето моят код:

func length(arry arry: Array)
{

}

Знам, че трябва да поставя <> след масива, но имам нужда от функцията, за да приема универсално всички масиви.

Променено: Всеки път, когато добавя разширение, получавам тези нелепи грешки. Моят код е:

//: 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);

Получавам грешки, казвайки: 1 На линия десет Разширенията може да не съдържат запаметени свойства 2 На линия единадесет очаквани декларации 3 На линия осемнадесет Очаквана декларация Благодаря,

крик

Отговори:

5 за отговор № 1

Ако искате, можете да напишете обща функция:

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

}

В Swift Apple представи концепцията за Generics които вече можете да намерите в Xcode 7 иЦел-C. Тази функция ви позволява да определите типа на всеки елемент от масива или колекционния клас, който използвате. Можете да дефинирате генеричен клас или общ метод като дадената проба. Тази функция ви дава възможност да напишете кода си в начин, по който може да работи безопасно с различни типове, като същевременно се възползва от безопасността на типа. Например, в извадката, която дадох, се казва, че 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)

За повече информация относно Generics можете да проверите онлайн документи на тази връзкаи / или гледайте видеоклипове за въвеждане на Swift за WWDC 2014и / или четене на общ раздел на Програмният език на Swift


1 за отговор № 2

Използването на родова функция е по-добрият отговор. Но вие също бихте могли да използвате [Any] като параметър за тази функция.

func length(array: [Any])->Int{
return array.count
}

1 за отговор № 3

Ако сте свикнали с това .length след това направете разширение за Array с a length Имот:

extension Array {
var length: Int {
return self.count
}
}

Тогава можете да го извикате на масиви, както сте "свикнали:

["a", "b"].length  // 2
[0, 1].length  // 2