Swift第二课 数组与字典

数组把相同类型的值存放在一个有序链表里。字典把相同类型的值存放在一个无序集合里,这些值可以通过唯一标识符(也就是键)来引用和查找。

在Swift里,数组和字典里所能存放的值的类型是明确的。这意味着你不能误把一个错误类型的值添加到数组或字典里,也意味着你可以明白无误地知道从数组或字典里取得的值会是什么类型的。Swift集合是类型明确的,这保证了你的代码会清楚地知道它们所能处理的值的类型,并让你能在代码开发阶段就发现任何输入错误。

数组(Array) 

使用[] 来创建数组,并使用下表来访问数组中的元素。

  var list = ["a","b","c","d"] 

var value = list[1]; // 将会把数组中下标为1 的元素取出来,赋值给value变量。
       list[2] = "e" //将数组中,下标为2的元素,重新赋值为 "e"
list. removeAtIndex (1) //移除数组中下标为1的元素。
list. append("abc") // 在数组list中,添加一个“abc” 字符串,元素将添加到数组最后一个。

声明一个空数组:var emptyArray = [String]() // []中,是声明数组中将要存储值的类型。


更多关于数组的方法,请查看 数组对象API 。 

字典(Dictionary) 

使用[] 来创建字典,并使用key 来获取key所对应的value,也可以使用for循环获取。 key 与 value

var dic = ["key1":"value1", "key2":"vlaue2"]

var value = dic["key1"] // 获取key1 所对应的值

dic["key3"] = "value3"// 给字典中,添加一个,key和vaule。

声明一个空字典: var emptyDictionary =Dictionary<String,Float>()  //创建一个Key 是String 类型,Value为Float类型的空字典。

更多关于字典的方法,请查看字典API



数组唯一性:

var a = [1,2,3]

        var b = a

var c = b

当改变,a数组中一个值的时候,比如:a[0] = 12 数组长度没有变化,数组就不会发生拷贝,那么 a[0],b[0] c[0] 的值都是相同的一个。

当给数组a添加一个元素,改变数组长度时,Swift会创建这个数组的拷贝,那么a将是原数组的一个独立拷贝。如果在修改a的值的时候,a将会返回与,b,c 不一样的结果。


在操作一个数组,或将其传递给函数以及方法调用之前是很有必要先确定这个数组是有一个唯一拷贝的。通过在数组变量上调用 unshare 方法来确定数组引用的唯一性。(当数组赋

给常量时,不能调用 unshare 方法)

 

如果一个数组被多个变量引用,在其中的一个变量上调用 unshare 方法,则会拷贝此数组,此时这个变量将会有属于它自己的独立数组拷贝。当数组仅被一个变量引用时,则不

会有拷贝发生。
在上一个示例的最后,
b c 都引用了同一个数组。此时在 b 上调用 unshare 方法则会将

b 变成一个唯一个拷贝:

1. b.unsha re() 

unshare 方法调用后再修改 b 中第一个元素的值,这三个数组(a,b,c)会返回不同的三个值:。


比较2个数组是否共用相同的数组元素可以使用很等于运算符(===) 或者 (!==)


如果仅需要确保你对数组的引用是唯一引用,请调用 unshare 方法,而不是 copy方法。unshare 方法仅会在确有必要时才会创建数组拷贝。copy 方法会在任何时候都创建一个新的拷贝,即使引用已经是唯一引用。 



 
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值