基本类型
其实和C差不多,也就是那几个。多出来的是Tuple和可选类型这两个概念
数字类型
这里记录一下每个类型的大小。
Int 在32位机器上是Int32 ,在64位机器上是Int64. 除了Int之外,还有Int,Int8,Int16,Int32,Int64.
UInt在32位机器上是UInt32 ,在64位机器上是UInt64. 除了UInt之外,还有UInt8,UInt16,UInt32,UInt64.
Double 64位浮点数
Float 32位浮点数
Swift不支持数字类型之间的自动转换。必须显式手动转换。
不同进制的前缀
十进制 没有
二进制 0b
八进制 0o
十六进制 0x
科学计数
1.25e2 代表 1.25乘上10的2次方
0xFp2 代表 15乘上2的2次方
typealias 关键字,用来个类型起别名
Boolean 类型
Swift和java一样,对boolean类型是强要求的,不能在if里面传一个整形用于判断。
新类型——元组(Tuple)
其实就是一群数据组合,可以将其解出来输出。注意的是tuple不只是两个元素,你可以自己扩展成多个元素。
可选类型(Optionals)
当一个方法可以返回一个对象的时候,它有可能返回一个空值。比如将字符串转换为数字的方法。为了处理这种情况,有了可选类型。
可选类型表示一个数据,它可能有值,也可能为空。基本语法是在类型的后面加上问号 ?
比如下面的代码
但是如果将str改为可选类型,那么这就可以输出了
那怎么将一个可选类型转换为对应的类型呢?这里有个强制解包的概念,使用 ! 对可选类型解包。请看下面代码。 强制解包有个注意点,就是如果这个可选类型是nil的话,那么强制解包的语句会在运行时报错。
为了解决强制解包的时候,可选类型可能为nil的问题。if语句里面多了一个 Optional Binding 的概念。就是将可选类型解包后判断是否为nil,然后执行不同的分支代码
如果在编程中,我们可以确保可选类型一定不为nil的,那么每次要将可选类型解包都要加个 !,很麻烦。所以有了隐式可选类型,它是用 ! 代替了 ? 号。然后在需要将可选类型转换为对应类型的时候就不用加 ! 了
基本运算
一些和C完全一样的基本运算如下
加减乘除,负号,自增(++)自减(–),+=等, 判断大小之类(==,!=,>=…),三元运算符,逻辑运算(!,&&,||)
不一样的运算符
取模%,在C中,只能对整形进行运算,Swift中可以对浮点数进行运算。结果就是多出来的那部分
比如 7.1%2.5 得到2.1,因为7.1可以最多减去2个2.5,然后剩下2.1
范围运算符 … 和 ..< 这两个运算符可以用在for里面。比如
单范围运算符
对于下标运算可以这样用。
??
这是一个二元运算符,例子 a ?? b
它的意思是:如果可选类型a不是nil,那么解包a并返回解包值,如果a为nil,那么返回b
相当于 a != nil ? a! : b