gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:17 25 4
gpt4 key购买 nike

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

我不希望扩展对包含其他类型(即 [Int][Double][String]等)

最佳答案

我同意上面的评论,即不可能编写这样的扩展,但我想建议改用全局函数,并可选择柯里化(Currying)以获得更大的灵 active 。

有关一些背景信息,请参阅 this blog post by Ole Begemann他在 Swift 中指出,

Instance methods are just curried functions that take the instance as the first argument.

所以从 Swift 的角度来看,instance.function()function(instance)() 之间没有区别。

我不知道你想做什么,但是一个看起来像这样的全局函数......

func skTextureFunc(textures: [SKTexture])(arg: SomeArgType) { }

...就所有意图和目的而言,与可以绑定(bind)到 [SKTexture] 的特定实例的实例方法完全相同。

如果您愿意,您可以将该函数部分应用到您将重复使用的 [SKTexture] 的特定实例,然后像使用绑定(bind)到该实例的实例方法一样使用它.所以,例如:

class Example {
var localSKTextureFunc: SomeArgType -> () {
return skTextureFunc(textureArray)
}

let textureArray = [SKTexture]()
}

因此,您始终可以在全局范围内使用柯里化(Currying)函数,而在本地(在类内)您可以将柯里化(Currying)函数绑定(bind)到类的特定实例。

我知道这不完全是您的要求,但我认为这是最好的解决方法,因为我们无法编写您描述的扩展。

关于ios - 将数组扩展限制为特定的数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com