作为 Swift 的新手,我决定使用一个函数来扩展Array
(或更具体地说[SKTexture]
是 SKTexture 数组),以从应用程序包中添加指定数量的帧。
// FRAMES
FuzzyRabbit_0001@2x.png
FuzzyRabbit_0002@2x.png
FuzzyRabbit_0003@2x.png
FuzzyRabbit_0004@2x.png
// CALL
var rabbitTextures = [SKTexture]()
self.rabbitTextures.textureFromFrames("FuzzyRabbit", count: 4)
下面列出了我的第一次尝试,我Cannot invoke 'append' with an argument list of type '(SKTexture!)'
从查看函数fuzzyPush
中得到了错误,因为我试图附加一个SKTexture
而不是通用的T
.
这是可能的,还是我不希望函数是通用的,而是特定于SKTexture
.
extension Array {
// ONLY SKTexture
mutating func textureFromFrames(imageName: String, count: Int) {
if !(self[0] is SKTexture) { return }
for index in 1...count {
let image = String(format: "\(imageName)_%04d", index)
let texture = SKTexture(imageNamed: image)
self.append(texture) // ERROR: Cannot invoke append with an argument list of type SKTexture!
}
}
// WORKS FINE
mutating func fuzzyPush(newItem: T) {
self.append(newItem)
}
}
我只是好奇这是否是我可以通过扩展来做的事情,这不是问题,因为我将它作为一个接受 3 个参数(imageName、count、arrayToAppend)的函数,所以我可以很容易地使用它。