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,我会看一看。同样的问题在这里:(可能重复?)来自最受欢迎的答案:“你不能在对模板更严格的泛型类型上编写方法。”