簡體   English   中英

swift函數返回一個數組

[英]swift function returning an Array

我正在學習Swift,我可以理解如何創建一個接收數組並返回數組的簡單函數。 繼承我的代碼:

 func myArrayFunc(inputArray:Array) -> Array{

 var newArray = inputArray

// do stuff with newArray

 return newArray
 }

我得到的紅色錯誤是:對泛型類型'Array'的引用需要<>中的參數

在Swift Array是泛型類型,因此您必須指定數組包含的類型。 例如:

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

如果您希望您的函數是通用的,那么使用:

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

如果您不想指定類型或具有泛型函數,請使用Any類型:

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

取決於你想要做什么。 如果你想要一個帶有特定類型MyType數組的專用函數,那么你可以編寫如下內容:

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

如果你想要一個通用數組函數,那么你必須使用泛型。 這將采用泛型類型T的數組並返回泛型類型U的數組:

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

}

Swift中沒有Array這樣的東西,但是有某種類型的數組,所以你應該給函數一個泛型類型,比如:

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

然后通過將T實例化為特定類型並傳遞此類型的數組來調用它。

謝謝所有人(特別是Kirsteins)。 所以我想出了這個效果很好並且看起來合乎邏輯的例子:

func myArrayFunc(inputArray:Array<String>) -> Array<String>{

var newArray = inputArray

// do stuff with newArray

return newArray
}

這應該這樣做:

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

  var newArray = inputArray

  // do stuff with newArray

  return newArray
}

您聲明泛型類型T ,它只是一個占位符。 因為它沒有要求T可以被任何類型替換(當調用函數時)。 所以你的函數可以這樣調用:

myArrayFunc([1, 2, 3])

或這個:

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

但是,首選語法通常是[T]而不是Array<T> (雖然兩者都是正確的)

func myArrayFunc<T>(inputArray: [T]) -> [T] {

  var newArray = inputArray

  // do stuff with newArray

  return newArray
}

試試這個

var test = doArray([true,true,true])

test.count
func doArray(arr : [AnyObject]) -> [AnyObject] {

   var _arr = arr

return _arr
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM