Swift类的内省和泛型

Swift类的内省和泛型,第1张

概述我试图动态创建一个基于类实例类型使用泛型,但我遇到类内省的困难。 这里有问题: >是否有一个Swift相当于Obj-C的self.class? >有没有办法实例化一个类使用来自NSClassFromString的AnyClass结果? >有没有办法获得AnyClass或者严格从一个通用参数T类型信息? (类似于C#的typeof(T)语法) 好吧,一个,Swift等效的[NSString类]是.s 我试图动态创建一个基于类实例类型使用泛型,但我遇到类内省的困难。

这里有问题:

>是否有一个Swift相当于Obj-C的self.class?
>有没有办法实例化一个类使用来自NSClassFromString的AnyClass结果?
>有没有办法获得AnyClass或者严格从一个通用参数T类型信息? (类似于C#的typeof(T)语法)

好吧,一个,Swift等效的[Nsstring类]是.self(见 Metatype docs,虽然他们很瘦)。

事实上,Nsstring.class甚至不工作!你必须使用Nsstring.self。

let s = Nsstring.selfvar str = s()str = "asdf"

类似地,使用swift类我试过…

class MyClass {}let MyClassRef = MyClass.self// ERROR :(let my_obj = MyClassRef()

嗯…错误说:

Playground execution Failed: error: :16:1: error: constructing an object of class type ‘X’ with a Metatype value requires an ‘@required’ initializer

06002

我花了一段时间来弄清楚这是什么意思…结果,它想让类有一个@required init()

class X {    func me() {        println("asdf")    }    required init () {    }}let Y = X.self// prints "asdf"Y().me()

一些文档将此称为.Type,但MyClass.Type在 *** 作中给我一个错误。

总结

以上是内存溢出为你收集整理的Swift类的内省和泛型全部内容,希望文章能够帮你解决Swift类的内省和泛型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1062784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存