对于数组,大部分程序猿都不陌生,因为几乎是所有语言都支持都支持数组,所以大家肯定都学过。但是,今天既然写数组了,就要写大家不知道的。
在Swift中,数组要比其他语言中的数组强大得多,下面举例说明。
1> 在其他语言中,数组是存储在一组连续的内存空间内,可以快速查找,但是不能对数组直接进行增加和删除操作。而Swift中的数组相当于其他语言中的数组和List的结合,因此在Swift中对数组进行增加、删除操作就像对数组进行查找操作一样简单。例如:定义一个数组变量var Numbers = [1,2,3,4,5],如果我们想在数组中添加一个元素6,只需用到append方法即可,即Numbers.append(6),就能将数组变为[1,2,3,4,5,6]。那么如果我想在数组中间添加元素呢,例如,将数组变成[0,1,2,3,4,5,6]呢,当然也简单,数组Numbers还有一个方法叫insert,insert方法的原型是 insert(newElement: T, atIndex: Int),其中,newElemen: T就是要添加进去的元素,atIndex: Int就是要添加的位置,所以我们只要一句Numbers.insert(0,atIndex: 0)就能实现将元素0插入数组的第一个位置.当我们想要删除最后一个元素时,同样用一个方法就可以,这个方法就是removeLas,所以Numbers.removeLast()如此简单的一行代码就能将数组[0,1,2,3,4,5,6]变成 [0,1,2,3,4,5]。当然,大部分时间或许我们想的不是删除末尾,而是删除中间的某个元素。假设我们想把数组 [0,1,2,3,4,5]变成[0,1,3,4,5],我们只需要一句代码就能搞定,就是:Numbers. removeAtIndex (2), removeAtIndex方法的原型是 removeAtIndex ( index: Int ),index: Int 就是待删除元素的位置。看了这几个方法是不是明显感觉Swift中数组的操作要比其他语言中数组的操作简单很多。当然,Swift中对数组进行增加、删除操作的的方法还有好多,再次不再一一赘述,大家可以自己学习。
2> 在很多语言中,数组不能相加,但是Swift却可以。例如:定义两个数组:let a = [1,2,3];let b = [4,5]。如果在其他语言中想把a和b中的元素赋给数组c,那将会很麻烦,但是在Swift中,世界是如此美好,只需要简单的一句就能搞定:var c = a + b。调用一下println(c),就会输出[1,2,3,4,5] 。再一次感觉世界还是很美好的。
在Swift中,数组要比其他语言中的数组强大得多,下面举例说明。
1> 在其他语言中,数组是存储在一组连续的内存空间内,可以快速查找,但是不能对数组直接进行增加和删除操作。而Swift中的数组相当于其他语言中的数组和List的结合,因此在Swift中对数组进行增加、删除操作就像对数组进行查找操作一样简单。例如:定义一个数组变量var Numbers = [1,2,3,4,5],如果我们想在数组中添加一个元素6,只需用到append方法即可,即Numbers.append(6),就能将数组变为[1,2,3,4,5,6]。那么如果我想在数组中间添加元素呢,例如,将数组变成[0,1,2,3,4,5,6]呢,当然也简单,数组Numbers还有一个方法叫insert,insert方法的原型是 insert(newElement: T, atIndex: Int),其中,newElemen: T就是要添加进去的元素,atIndex: Int就是要添加的位置,所以我们只要一句Numbers.insert(0,atIndex: 0)就能实现将元素0插入数组的第一个位置.当我们想要删除最后一个元素时,同样用一个方法就可以,这个方法就是removeLas,所以Numbers.removeLast()如此简单的一行代码就能将数组[0,1,2,3,4,5,6]变成 [0,1,2,3,4,5]。当然,大部分时间或许我们想的不是删除末尾,而是删除中间的某个元素。假设我们想把数组 [0,1,2,3,4,5]变成[0,1,3,4,5],我们只需要一句代码就能搞定,就是:Numbers. removeAtIndex (2), removeAtIndex方法的原型是 removeAtIndex ( index: Int ),index: Int 就是待删除元素的位置。看了这几个方法是不是明显感觉Swift中数组的操作要比其他语言中数组的操作简单很多。当然,Swift中对数组进行增加、删除操作的的方法还有好多,再次不再一一赘述,大家可以自己学习。
2> 在很多语言中,数组不能相加,但是Swift却可以。例如:定义两个数组:let a = [1,2,3];let b = [4,5]。如果在其他语言中想把a和b中的元素赋给数组c,那将会很麻烦,但是在Swift中,世界是如此美好,只需要简单的一句就能搞定:var c = a + b。调用一下println(c),就会输出[1,2,3,4,5] 。再一次感觉世界还是很美好的。
3> 数组的区间赋值。Swift支持使用闭区间操作符(…)和半开半闭区间操作符(..<)对数组进行赋值,即Array[min...max] = [element1,element2,element3,...,elementn]或Array[min...max] = [element1,element2,element3,...,elementn],这一点在其他语言中是很少能支持的。例如,定义一个数组:var array = [1,2,3,4,5,6],经过代码:array[2...4] = [7,8,9],数组array就会变成[1,2,7,8,9,6]。对于数组的区间赋值,就会出现左边区间长度与右边素个数不等和区间上下界超出数组上下界问题,对于第二个问题,系统会直接抛出异常,但是对于第一个问题,要分下边几种情况:
a> 如果左边区间长度小于右边元素个数,直接在数组后边加上即可,如果区间后边仍有元素,跟上即可。例如:array1 = [1,2,3,4,5,6]; array1[1…2] = [7,8,9],执行代码后,array1 = [1,7,8,9,4,5,6]。
b> 如果左边区间长度大于右侧,将区间内剩余未赋值元素直接删除即可。例如:var array2 = [1,2,3,4,5,6];array2[1…3] = [7,8];代码执行后array2 = [1,7,8,5,6]。也就是元素array2[3]被删除了。