Nic*_*ick 5 generics dictionary swift
我正在尝试创建一个字典变量,其值是两种类型之一.我的尝试的一个例子应该更清楚:
var objects: <T where T: Float, T: Bool>[String: T]
Run Code Online (Sandbox Code Playgroud)
这会引发编译器错误,只有语法函数类型可以是通用的.我想知道是否有可能,我只是不知道正确的语法?
Rob*_*ier 15
您想要的工具是带有相关数据的枚举.
enum Stuff {
case FloatyThing(Float)
case BoolyThing(Bool)
}
let objects = ["yes!" : Stuff.BoolyThing(true),
"number" : Stuff.FloatyThing(1.0)]
Run Code Online (Sandbox Code Playgroud)
这捕获"浮动或布尔的对象",并提供更好的文档和类型安全性.
要卸载数据,请使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
使用switch语句可确保覆盖所有可能的类型,并防止您意外地将数据卸载为错误的类型.非常好,编译器可以帮助你这么多.
有关更多信息,请参阅Swift编程语言中的"枚举和结构".
我还推荐Alexandros Salazar 在Swift中进行错误处理,这是一个非常好的例子,说明如何使用它来处理常见问题.
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |