是否可以在向Array
编写扩展程序时将扩展程序限制为特定的Array
类型?我要做的是添加Array
的扩展程序,该扩展程序仅适用于[SKTexture]
类型的数组。
我不希望扩展程序对包含其他类型的数组(例如[Int]
,[Double]
,[String]
等)执行任何操作。
答案 0 :(得分:0)
我同意上面的评论,不可能编写这样的扩展名,但是想建议使用全局函数,并选择使用它来提高灵活性。
有关背景信息,请参阅this blog post by Ole Begemann他在Swift中注意到的内容,
实例方法只是将实例作为第一个参数的curried函数。
因此,从Swift的角度来看,instance.function()
和function(instance)()
之间没有区别。
我不知道你要做什么,但是看起来像这样的全局函数......
func skTextureFunc(textures: [SKTexture])(arg: SomeArgType) { }
...出于所有意图和目的,与可以绑定到[SKTexture]
的特定实例的实例方法完全相同。
如果需要,可以将函数部分应用于将要重复使用的[SKTexture]
的特定实例,然后将其用作绑定到该实例的实例方法。所以,例如:
class Example {
var localSKTextureFunc: SomeArgType -> () {
return skTextureFunc(textureArray)
}
let textureArray = [SKTexture]()
}
所以全局你总是可以使用curried函数,并且在本地(在类中)你可以将curried函数绑定到类的特定实例。
我知道这并不是你提出的要求,但我认为这是最好的解决方法,因为我们不能像你描述的那样编写扩展名。