我想插入0總是到第0個索引的數組,我試圖在數組上寫入擴展。但是,讓一些錯誤,如:Swift 3數組擴展錯誤
不能調用與類型的參數列表 '插入' '(智力,在:智力)'
這裏是我的代碼
extension Array {
mutating func printWithZero() -> Array
{
self.insert(0, at: 0)
return self
}
}
我想插入0總是到第0個索引的數組,我試圖在數組上寫入擴展。但是,讓一些錯誤,如:Swift 3數組擴展錯誤
不能調用與類型的參數列表 '插入' '(智力,在:智力)'
這裏是我的代碼
extension Array {
mutating func printWithZero() -> Array
{
self.insert(0, at: 0)
return self
}
}
您的擴展,如您所定義的,適用於所有類型的數組。不幸的是,不可能在所有數組中插入0
。例如,您不能將0
插入[String]
。
您只需要對可以包含整數文字0
的數組進行擴展。
extension Array where Element: ExpressibleByIntegerLiteral {
mutating func printWithZero() -> Array
{
self.insert(0, at: 0)
return self
}
}
舉例:您可以通過在Element
類型,指定該類型是ExpressibleByIntegerLiteral
數組的添加約束爲此
var a = [1, 2, 3]
let b = a.printWithZero()
print(a) // [0, 1, 2, 3]
print(b) // [0, 1, 2, 3]
// Works with an array of Doubles too
var c = [1.5, 2.5, 3.5]
let d = c.printWithZero()
print(c) // [0, 1.5, 2.5, 3.5]
print(d) // [0, 1.5, 2.5, 3.5]
我會用這個簡單的代碼,沒有擴展 - 斯威夫特3:
var myArray = [1,2,3]
myArray.insert(0, at: 0)
print(myArray) // [0,1,2,3]