Swift中数组(Arrary)及成员方法介绍

在大多数语言中数组是常见的一个基本类型数据结构,Swift也不例外,和大多数语言一样,Swift中数组是同类型对象的有序集合。然而在Objective-C的NSArray不一样的是可以存储任意类型的对象,Swift强制要求数组的元素为同一类型,这样可以操作数组元素时不需要再去检查数据类型。

数组方法简介

下面的表格列出了数组的主要函数及操作,接下来我们将更深入的了解它们。 FtDF4iws_s0VqvwkUSLqZuGYciyf当然数组还有些其他方法,这里仅列出常用的.我不确定我会不会经常用数组的reverse反转元素方法,但是我很惊喜它的存在。

创建数组

和其他类型一样,主要有2种方式创建数组,分别为采用字面赋值构造数组或调用初始化方法。下面例子列出怎么创建数组:

var literalArray = [0,1,1,2,3,5,8,13,21]
var emptyArray = [Int]()
var defaultValueArray = [Int](count: 5, repeatedValue: 0)

第三行也是通过构造函数初始化创建,只不过创建了一个包含5个都为0的元素数组。

[Int]形式创建数组实际上是Array<T>的简单写法,Array<T>这种方式并没有在上面表格中列出,由于[Int]易读性强,Apple鼓励使用这种简单方式创建数组。

有一点值得注意的是,通过var定义的数组是可以修改的(mutable),可以增加、删除元素。而通过let定义的常量数组,只能读取不能修改它。

访问数组值

在swift中有好几种方式访问数组的值,但是,最常见的还是通过下标方式subscript:

var fourthValueOfArray = literalArray[3]

上面表示读取数组的第4个值,在C或者其他大多数语言中,索引都是从0开始计数,这就是为什么索引值为3读取的确实第4个值。下面给出表格说明: FpvOekcUiy99WsECE2UVp66T_rQs

在swift中也有其他读取元素的方法,在大多数语言中访问数组的第一个和最后一个值,你需要手动的去设置数组的下标,如:访问第一个[0],访问最后一个[literalArray.count-1]。很明显,这种方式看起来不直观简洁。在swift中apple在数组中增加了firstlast属性:

var firstValue = literalArray.first  //Returns Optional Int containing 0
var lastValue = literalArray.last    //Returns Optional Int containing 21

通过first和last访问素组的值将返回可选类型的值optional values,当数组为空时,则返回nil.即是只有一个元素时,通过firstlast访问还是返回optional值。

另外一种方式访问素组就是通过循环方式,可以采用loop方式或者for-in循环。

var sum = 0

for number in literalArray
{
    sum += number
}

这段代码实现的是遍历数组,并将素组的每个元素相加统计他们的和。

当我学会C#的foreach循环时(相当于swift的 for-in),我开始大量的使用它,但是有时候会遇到问题,有时候需要用到索引index,而在swift中有个很好的处理方式,可以通过enumerate 枚举元素,并且返回一个由index和元素组成的元组Tuples

for (index, number) in enumerate(literalArray)
{
    println("Fibonacci Number \(index):  \(number)")
}
//Last Line Output:  "Fibonacci Number 8:  21"

数组的元素数量

在swift中有2个方法可以检查元素的数量。最简单的方式就是.count:

var elementsInArray = literalArray.count  //returns 9

另外还有你可以通过isEmpty来检查数组是否有元素,即是否为空数组。

var emptyStatus = literalArray.isEmpty  //returns false

IsEmpty返回boolean类型判断数组是否为空,即如果数量为0则为true,否则为false.

修改数组

var定义的数组才能修改,有几种方式可以修改数组。

增加数组元素

在数组末尾增加元素或者插入元素到指定的index,下面介绍通过append+=方法增加元素

emptyArray.append(5)
emptyArray += [5]

上面2个表达式效果是相同的。值得注意的一点是,使用+=操作符时,右边的必须为数组,即使只有一个元素时也要为数组,还有就是通过这种方式你可以一次性给数组增加多个值,如:

emptyArray += [9, 8, 7, 6]

现在,emptyArray含有了[5,5,9,8,7,6]这些元素值。

可以通过insert方法插入元素到数组的任意位置。

emptyArray.insert(12, atIndex: 2)
//emptyArray now is [5, 5, 12, 9, 8, 7, 6]

我们在第三个位置插入12。

清空数组方法:

emptyArray.removeAll()
//emptyArray now is empty once more

removeAll方法接受一个参数,允许清空数组时是否保持数组的容量,该参数默认值为false,即将数组的capacity容量设置为0。如果你想保持容量,可以参考下代码:

let originalCapacity = emptyArray.capacity   //originalCapacity = 12
emptyArray.removeAll(keepCapacity: true)
let newCapacity = emptyArray.capacity        //newCapacity = 12

由上代码可以看出emptyArray在需要重新分配内存之前可以存储12个值,然而使用removeAll(),newCapcity则等于0。

基于数组创建新数组

可以采用+合并2个数组为一个数组,它返回的新数组顺序按照操作符左边的数组到右边数组的元素一次排列。

var arrayOne = [1,2,3,4,5]
var arrayTwo = [30, 40, 50]

var bothArrays = arrayOne + arrayTwo
//bothArrays now is 1, 2, 3, 4, 5, 30, 40, 50]

调用reserse方法反转数组元素也会返回一个新的数组。

var normalArray = [20, 21, 22, 23, 24, 25]
var reversedArray = normalArray.reverse()
//reversedArray now is [25, 24, 23, 22, 21, 20]

文章中所有代码在Xcode6 Beta6中测试通过。

原文:http://www.codingexplorer.com/arrays-swift/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值