gpt4 book ai didi

generics - Swift 中的泛型函数

转载 作者:行者123 更新时间:2023-11-30 10:21:09 24 4
gpt4 key购买 nike

我来自 C++,我对 Swift 中的泛型函数有点困惑。

在 C++ 中,我可以做到这一点:

class Entity
{
template <typename T>
T *getComponent()
{
return (T *)(listComponent_[typeid(T).name()]);
}
};

我可以这样做以从我的Entity获取特定的Component

Entity().getComponent<LifeComponent>();

我想在 Swift 中重现这一点,但我不知道如何实现它。

在 Swift 中,我必须为函数定义一个参数来确定我的类型。

在 swift :

class Entity
{
func get<T>() -> T
{
return ??
}
}

我希望能够做到:

Entity().get<LifeComponent>()

你能帮我吗?

最佳答案

我不懂C++语法,但也许你想要的是这样的?

class Entity {
var list:[Any] = []

func register(obj:Any) {
list.append(obj)
}
func getComponent<T>(type:T.Type) -> T? {
for obj in list {
if let instance = obj as? T {
return instance
}
}
return nil
}
}

let cls = Entity()
cls.register(1)
cls.register("This is a String")
cls.register(UIView())
cls.register(1.01)

cls.getComponent(String) // -> Optional("This is a String")

关于generics - Swift 中的泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466316/

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