泛型 – Swift中的通用字典值类型

泛型 – Swift中的通用字典值类型,第1张

概述我正在尝试创建一个字典变量,其值是两种类型之一.我的尝试的一个例子应该更清楚: var objects: <T where T: Float, T: Bool>[String: T] 这会引发编译器错误,只有语法函数类型可以是通用的.我想知道是否有可能,我只是不知道正确的语法? 您想要的工具是带有相关数据的枚举. enum Stuff { case FloatyThing(Float) c 我正在尝试创建一个字典变量,其值是两种类型之一.我的尝试的一个例子应该更清楚:
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,这是一个非常好的例子,说明如何使用它来处理常见问题.

总结

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

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

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

原文地址:https://54852.com/web/1089941.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存