[英]Check existence of Swift Array item with Generic
我想創建一個Swift Array的擴展,該擴展返回隨機N個元素。
extension Array {
func getRandomItems(max:Int) -> [T] {
var randomItems = [T]()
repeat
{
let randomNumber = Int(arc4random_uniform(UInt32(self.count)))
if contains(randomItems, self[randomNumber]) {
randomItems.append(self[randomNumber])
}
} while (randomItems.count < max)
return randomItems
}
}
print(["Canada","Brazil","China","Japan","U.S"].getRandomNumbers(3))
編譯器說“不能使用類型為[[T],T)的參數列表調用'contains''如何使此函數起作用?
您需要確保只擴展符合Equatable
數組。 另外,在最新的beta中, T
已替換為Element
:
extension Array where Element : Equatable {
func getRandomItems(max:Int) -> [Element] {
var randomItems = [Element]()
repeat
{
let randomNumber = Int(arc4random_uniform(UInt32(self.count)))
if randomItems.contains(self[randomNumber]) {
randomItems.append(self[randomNumber])
}
} while (randomItems.count < max)
return randomItems
}
}
您的行if randomItems.contains(self[randomNumber])
應該是if !randomItems.contains(self[randomNumber])
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.