泛型 – Swift中的通用字典值类型
发布时间:2020-12-14 02:28:59 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个字典变量,其值是两种类型之一.我的尝试的一个例子应该更清楚: var objects: T where T: Float,T: Bool[String: T] 这会引发编译器错误,只有语法函数类型可以是通用的.我想知道是否有可能,我只是不知道正确的语法? 您想要的工具是带有相
我正在尝试创建一个字典变量,其值是两种类型之一.我的尝试的一个例子应该更清楚:
var objects: <T where T: Float,T: Bool>[String: T] 这会引发编译器错误,只有语法函数类型可以是通用的.我想知道是否有可能,我只是不知道正确的语法?
您想要的工具是带有相关数据的枚举.
enum Stuff { case FloatyThing(Float) case BoolyThing(Bool) } let objects = ["yes!" : Stuff.BoolyThing(true),"number" : Stuff.FloatyThing(1.0)] 这捕获“浮动或布尔的对象”,并提供更好的文档和类型安全性. 要卸载数据,请使用switch语句: if let something = objects["yes!"] { switch something { case .FloatyThing(let f): println("I'm a float!",f) case .BoolyThing(let b): println("Am I true?",b) } } 使用switch语句可确保覆盖所有可能的类型,并防止您意外地将数据卸载为错误的类型.非常好,编译器可以帮助你这么多. 有关更多信息,请参阅Swift编程语言中的“枚举和结构”. 我还推荐了Alexandros Salazar的Error Handling in Swift,这是一个非常好的例子,说明如何使用它来处理常见问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |