数组支持任何类型的值

Posted

技术标签:

【中文标题】数组支持任何类型的值【英文标题】:Array supports values of any type 【发布时间】:2015-08-14 09:43:20 【问题描述】:

根据 swift 文档 - “数组将相同类型的值存储在有序列表中。”

摘自:Apple Inc.“Swift 编程语言”。电子书。 https://itun.es/in/jEUH0.l

var justBlankArray = []
var a:Int = 4
var b:Dictionary = ["Address":"Silver Oaks"]
justBlankArray = ["Tush",a,b] 
println(justBlankArray[0].classForCoder)
println(justBlankArray[1].classForCoder)
println(justBlankArray[2].classForCoder)

输出-

NSString NSNumber NSDictionary

谁能告诉我这是怎么回事?它们不是数组中的不同类型吗?

【问题讨论】:

空白数组采用anyObject..如果您在数组中定义任何类型而不是仅采用该类型 非常感谢! 【参考方案1】:

创建的justBlankArrayNSArray 类型,而不是Swift 类型Array。如果你想在 Swift-type Array 中存储任何类型的对象,你可以这样做:

var justBlankArray : [AnyObject] = []

它创建一个可以容纳任何类型对象的数组。即使是 C 结构,NSArray 也做不到。

【讨论】:

看看 NSArray 做了什么 - NSArray *arr = @[@"String",@5,@@"name": @"tush"];是的,在这种情况下它会考虑任何对象。 您对我的回答有何顾虑?【参考方案2】:

当你像这样创建数组时:

var justBlankArray = []

类型为NSArray,NSArray 可以保存异构数据。 (意味着它可以容纳任何物体)

如果您使用以下方法打印justBlankArray 的类:

println(justBlankArray.classForCoder)

它会给你NSArray作为结果。

【讨论】:

【参考方案3】:

如果你没有为数组字面量指定类型,它会被推断为NSArrayNSArray 可以容纳任何类型的类对象 (AnyObject)。

【讨论】:

以上是关于数组支持任何类型的值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript

Json字符串

MySQL JSON类型

php数据类型

yaml数组类型详解

GO语言学习——复合数据类型 数组