Swift的数据类型
Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型;Double和Float是浮点型;Bool是布尔型;String是字符串。Swift 还有两个有⽤用的集合类型, Array和Dictionary,
除了我们熟悉的类型,Swift 还增加了 Objective-C 中没有的类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。
Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示“那儿有一个值,并且它等于 x ”或者“那儿没有值”。可选有点像在Objective-C 中使用 nil,但是它可以用在任何类型上,不仅仅是类。可选类型比 Objective-C 中的 nil指针更加安全也更具表现力,它是 Swift 许多强大特性的重要组成部分。
Swift用字符串插值(string interpolation)的方式把常量名或者变量名当
做占位符加入到⻓长字符串中,Swift会⽤用当前常量或变量的值替换这些占位
符。将常量或变量名放⼊入反斜杠符加一对圆括号中 "\()":
整数边界
使用min或max值来获取该类型的最大最小值,如:
let minValue = UInt8.min // minValue is equal to 0, and
is of type UInt8 let maxValue = UInt8.max // maxValue is
equal to 255, and is of type UInt8 这些值边界值区分了整数
的类型(⽐比如 UInt8),所以可以像该类型的其他值⼀一样被⽤用在表达式中⽽而不
⽤用考虑益处的问题。
类型别名为现有类型定义的替代名称。您可以使用typealias关键字定义类型别名。当你使用的类型名称更符合上下文时,可以定义如:typealias AudioSample = UInt16
元组类型
元组类型可以将一些不同的数据类型组装成一个元素,这个元素可以用来作为函数的返回值返回包含多种数据类型的值。例:let http404Error = (404, "Not Found")
可选类型
在一个值可能不存在的时候,可以使用可选类型。这种类型的定
义是:要么存在这个值,且等于x,要么在这个值不存在。
使用断言调试
断言是一种实时检测条件是否为true的方法。如果这个条件为false,那么代码将会中断执行。
基本预算符
1、b为负值时的b的符号被忽略,这意味着%b和%-b的结果是
一样的。
println("-9 除 4 取余:\(-9%4)"); - -9 除 4 取余:-1
println("-9 除 -4 取余:\(-9%(-4))"); -> -9 除 -4 取余:-1
不同于C和Objective-C,Swift的余数运算符也能运用于浮点数:
2、封闭范围运算符
封闭范围运算符(a…b)定义了一个范围,从a到b,并包括a和b的
值。
3、半封闭的区域运算符
半封闭的区域运算符(a..b)定义了从a到b的范围,但不包括b。
4、字符串通过isEmpty属性可以检查一个字符串是否为空
5、数组
a)通过只读属性count来读取数组的长度;
b)通过一个返回布尔类型的isEmpty属性检查数组的长度是否为0
c)在数组末尾增加一个元素可以通过append方法
d)甚至,还可以用(+=)操作符来把一个元素添加到数组末尾
e)你也可以用(+=)操作符来把一个数组添加到另一个数组的末尾
f)你可以使用下标语法一次性改变一系列的值,尽管修改的区域远远大于要修改的值。在下面的雷子中, 替换掉
“Chocolate Spread”, “Cheese”,”Butter”,”Bananas”,”Apples”:
shoppingList[4...6] = ["Bananas", "Apples"] // shoppingList 现在包含6个元素
g)在一个特定的索引位置插入一个值,可以使用insert(atIndex:)方法shoppingList.insert("Maple Syrup", atIndex: 0)
h)你可以调用removeAtIndex方法移除特定的元素。这个方法移除特定索引位置的元素,已经返回这个被移除的元素(尽管你并不关心这个返回值)。
i)如果你从数组中移除最后一个元素,使用removeLast方法
j)遍历数组
i.可以使用for-in循环来遍历数组中的值
ii.使用enumerate函数代替会更方便,enumerate函数对于每一个元素都会返回一个包含元素的索引和值的元组(tuple)。
例:for (index, value) in enumerate(shoppingList)
k)你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue 例var threeDoubles = Double[](count: 3, repeatedValue: 0.0)
6、字典
a)
i.updateValue(forKey:) 方法去设置或者更新一个特定键的值、
ii.updateValue(forKey:) 方法如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是,
iii.updateValue(forKey:) 方法 如果更新时,会返回原来旧的值
a)removeValueForKey方法,这个方法如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil
b)字典中的每一个元素都会返回一个元祖(tuple),你可以在循环部分分解这个元祖,并用临时变量或者常量来储存它。
例子:for (airportCode, airportName) in airports { println("\(airportCode): \(airportName)") }
注意Swift中的字典类型是非序列化集合
7、Where关键词
switch语句可以使用where关键词来增加判断的条件,在下面的例子中:
let yetAnotherPoint = (1, -1)
switch yetAnotherPoint
{
case let (x, y) where x == y:
println("(\(x), \(y)) is on the line x == y")
case let (x, y) where x == -y:
println("(\(x), \(y)) is on the line x == -y")
case let (x, y):
println("(\(x), \(y)) is just some arbitrary point")
}
每个case都因为有where而不同,第一个case就是判断x是
否与y相等,表示点在斜线y=x上。
8、控制跳转语句
在Swift中控制跳转语句有4种,让编程人员更好地控制代码的流转,包括:
continue
break
fallthroughreturn
return
fallthrough
由于Swift中的switch语句不会自动的因为没有break而跳转
到下一个case,因此如果需要想C语言中那样,依次执行每个
case的时候,就需要用到fallthrough关键词。