在编写扩展时是否可以将扩展Array
限制为特定Array
类型?我想要做的是添加一个Array
仅适用于 Arrays 类型的扩展[SKTexture]
。
我不希望扩展对包含其他类型(即[Int]
, [Double]
,[String]
等)的数组做任何事情
我同意上面的评论,即不可能编写这样的扩展,但我想建议使用全局函数,并可以选择柯里化它以获得更大的灵活性。
有关一些背景信息,请参阅Ole Begemann 的这篇博客文章,他在 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 函数绑定到类的特定实例。
我知道这不完全是您所要求的,但我认为这是最好的解决方法,因为我们不能编写像您描述的那样的扩展。