将数组扩展限制为特定的数组类型?

时间:2015-04-28 13:44:45

标签: ios swift sktexture

是否可以在向Array编写扩展程序时将扩展程序限制为特定的Array类型?我要做的是添加Array的扩展程序,该扩展程序仅适用于[SKTexture]类型的数组。

我不希望扩展程序对包含其他类型的数组(例如[Int][Double][String]等)执行任何操作。

1 个答案:

答案 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函数绑定到类的特定实例。

我知道这并不是你提出的要求,但我认为这是最好的解决方法,因为我们不能像你描述的那样编写扩展名。

相关问题