设为首页 加入收藏

TOP

[Swift]Day03:集合类型
2014-11-23 17:58:01 】 浏览:8746
Tags:Swift Day03 集合 类型

集合类型

数组

重复值的初始化

除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值:

// [0.0,0.0,0.0]
var threeDoubles = [Double](count:3,repeatedValue:0.0)

带索引值的遍历

我们可以用 for in 遍历数组,如果想要 index 的话,可以用 enumerate (base: Seq)

let arr = [“a”,”b”]
for (index, value) in enumerate(arr) {
    println(“\(index):\(value)”)
}
// 0:a
// 1:b

赋值与拷贝

Swift 中数组和字典均是结构体的形式实现的,和 NSArray 那一套不太一样,所以赋值的时候其实是给了一份拷贝:

let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.height = 233
cinema  // 1920 233
hd      // 1920 1080

高阶函数

Swift 有一些 Higher Order Functions :map、filter和reduce。使用得当的话可以省去很多不必要的代码。

map

map 可以把一个数组按照一定的规则转换成另一个数组,定义如下:

func map(transform: (T) -> U) -> U[] 

也就是说它接受一个函数叫做 transform ,然后这个函数可以把 T 类型的转换成 U 类型的并返回 (也就是 (T) -> U),最终 map 返回的是 U 类型的集合。

下面的表达式更有助于理解:

[ x1, x2, … , xn].map(f) -> [f(x1), f(x2), … , f(xn)]

如果用 for in 来实现,则需要这样:

var newArray : Array
    
      = [] for item in oldArray { newArray += f(item) } 
    

举个例子,我们可以这样把价格数组中的数字前面都加上 ¥ 符号:

var oldArray = [10,20,45,32] var newArray = oldArray.map({money in “¥\(money)”}) println(newArray) // [¥10, ¥20, ¥45, ¥32]

如果你觉得 money in 也有点多余的话可以用 $0

newArray = oldArray.map({“\($0) 
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ListView中按钮监听器 设置 及 优.. 下一篇CheckBox:屏蔽setChecked方法对On..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目