我想插入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]