泛型 – Swift泛型类型转换
发布时间:2020-12-14 04:41:05 所属栏目:百科 来源:网络整理
导读:我有一个泛型类,我有一个泛型类型的数组.不,我想根据数组中的类进行一些操作.我有2个班:人和家(没有继承).但是这段代码不起作用: let allValues = [T]()if allValues[0] is Person { let values = (allValues as [Person])} 但这不起作用,因为T与’人’不
我有一个泛型类,我有一个泛型类型的数组.不,我想根据数组中的类进行一些操作.我有2个班:人和家(没有继承).但是这段代码不起作用:
let allValues = [T]() if allValues[0] is Person { let values = (allValues as [Person]) } 但这不起作用,因为T与’人’不同.我需要做什么?谢谢你的帮助. 解决方法
我同意Oliver Borchert和Airspeed Velocity:应该使用协议解决这类问题.
但是,您可以执行使用此语法询问的演员: let values = allValues as Any as [Person] 现在我看到2个问题: >您的IF将崩溃,因为您的数组allValues包含0 例 class LifeForm {} class Person:LifeForm {} T等于LifeForm. 我认为以下版本更安全,因为您直接评估类型T. class Things<T>{ func doSomething() { let allValues = [T]() // populate allValues.... if T.self is Person.Type { println("List of Person") let values = allValues as Any as [Person] } } } 重要提示:我提供此代码只是为了显示语法.我不喜欢这个abborach(再一次,一个协议会更好),因为类Things包含特定于Person的逻辑.理想情况下,事物应该对人物一无所知,因为事物是一般的阶级. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |