swift – 嵌套类中名为`Type`的枚举失败
发布时间:2020-12-14 04:48:53 所属栏目:百科 来源:网络整理
导读:出于某种原因,使用带有嵌套枚举的嵌套类名为Type dosen不能很好地使用 swift编译器. class A { class B { enum Type { case One case Two } let myC: Type init(myC: Type) { self.myC = myC } } func getB(myC: B.Type) - B { return B(myC: myC) // ERROR
出于某种原因,使用带有嵌套枚举的嵌套类名为Type dosen不能很好地使用
swift编译器.
class A { class B { enum Type { case One case Two } let myC: Type init(myC: Type) { self.myC = myC } } func getB(myC: B.Type) -> B { return B(myC: myC) // ERROR 1 } } let a = A() let b = a.getB(.Two) // ERROR 2 上面的代码产生两个错误:’A.B.Type’不能转换为’A.B.Type’,’A.B.Type.Type’没有名为’Two’的成员. 以下案例确实有效: > A级以外的B级 这是Swift中的一个错误还是这个预期的行为?输入我们不应该使用的保留名称吗? 解决方法
B.Type指的是B类的元类型,这就是编译器不喜欢你定义一个名为’Type’的内部枚举的原因.
您可以使用Type in variable / constant声明来进行类反射: class A { required init() {} } class B { var a: A.Type var aInstance: A init() { a = A.self aInstance = a() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |