博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift 存放多类型的容器
阅读量:5778 次
发布时间:2019-06-18

本文共 1106 字,大约阅读时间需要 3 分钟。

常见问题

在 swift 中容器都是泛型,一个容器只能存放同一类型的元素

public struct Array
: RandomAccessCollection, MutableCollectionpublic struct Dictionary
: Collection, ExpressibleByDictionaryLiteral where Key : Hashablepublic struct Set
: SetAlgebra, Hashable, Collection, ExpressibleByArrayLiteral where Element : Hashable复制代码

但如果想要把不同的类型放在同一个容器中我们可以使用 Any。

let arry: Array
= ["hello", 99, ["key":"value"]]复制代码

这样将数组类型定义成 Any 之后我们可以将任意类型添加进数组,也可以从数组中取出的值转换成任意类型。但这样做是十分危险的,取值时一旦类型转换错误再调用该类型的方法后就容易造成不必要的 crash 。

如何处理

如果确实存在这种多类型数据放在同一个数组中的需求时,建议使用带有值的 enum 来处理。

enum TypeOfMyArr {   case stringValue(String)   case intValue(Int)   case dicValue(Dictionary
)}复制代码
let array: Array
= [TypeOfMyArr.stringValue("hello"), TypeOfMyArr.intValue(99), TypeOfMyArr.dicValue(["key":"value"])] for item in array { switch item { case let .stringValue(s): print(s + "world") case let .intValue(i): print(i + 1) case let .dicValue(dic): print(dic) } }复制代码

这样就可以愉快的在数组中使用不同的数据类型了。

转载地址:http://msuyx.baihongyu.com/

你可能感兴趣的文章
JS获取服务器时间并且计算距离当前指定时间差的函数
查看>>
java中关于重载与重写的区别
查看>>
最受欢迎的14款渗透测试工具
查看>>
华为硬件工程师笔试题
查看>>
jquery居中窗口-页面加载直接居中
查看>>
cd及目录快速切换
查看>>
黑马day11 不可反复度&解决方式
查看>>
分布式服务化系统一致性的“最佳实干”--转
查看>>
一次Mutex死锁的原因探究
查看>>
flask的文件上传和下载
查看>>
如何查看java class文件的jdk版本
查看>>
ImportError: cannot import name UnrewindableBodyError
查看>>
翻翻git之---有用的欢迎页开源库 AppIntro
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
C++ 代码风格准则:POD
查看>>
PHP-Windows下搭建PHP-MSF环境【原创】
查看>>
linux-友好显示文件大小
查看>>
emplace_back() 和 push_back 的区别(转)
查看>>
【转】【WPF】WPF中MeasureOverride ArrangeOverride 的理解
查看>>