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

Ios 是否将数组扩展限制为特定的数组类型?,ios,swift,sktexture,Ios,Swift,Sktexture,在向数组写入扩展名时,是否可以将扩展名仅限于特定的数组类型?我试图做的是向数组添加一个扩展,该扩展只适用于[SKTexture]类型的数组 我不希望扩展对包含其他类型的数组做任何事情(例如,[Int],[Double],[String],等等)我同意上面的评论,即不可能编写这样的扩展,但希望建议改用全局函数,可以选择将其套用以获得更大的灵活性 有关一些背景信息,请参见他在Swift中的注释 实例方法只是将实例作为第一个参数的curry函数 因此,从斯威夫特的角度来看,instance.funct

在向
数组
写入扩展名时,是否可以将扩展名仅限于特定的
数组
类型?我试图做的是向
数组添加一个扩展,该扩展只适用于
[SKTexture]
类型的数组


我不希望扩展对包含其他类型的数组做任何事情(例如,
[Int]
[Double]
[String]
,等等)

我同意上面的评论,即不可能编写这样的扩展,但希望建议改用全局函数,可以选择将其套用以获得更大的灵活性

有关一些背景信息,请参见他在Swift中的注释

实例方法只是将实例作为第一个参数的curry函数

因此,从斯威夫特的角度来看,
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函数绑定到类的特定实例


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

遗憾的是,你不能。我也渴望这个功能。这里有一些更好的尝试:谢谢Andrew,我会看一看。同样的问题在这里:(可能重复?)来自最受欢迎的答案:“你不能在对模板更严格的泛型类型上编写方法。”