Swift学习笔记2——基本类型和基本运算

来源:互联网 发布:玉米库存真实数据 编辑:程序博客网 时间:2024/05/30 04:34

基本类型

其实和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不支持数字类型之间的自动转换。必须显式手动转换。

var i: Int = 2_000   //这个表示2000var d: Double = 5.3var e = d * Double(i)

不同进制的前缀

十进制       没有

二进制        0b

八进制        0o

十六进制     0x

科学计数

1.25e2 代表  1.25乘上10的2次方

0xFp2  代表   15乘上2的2次方

typealias 关键字,用来个类型起别名

typealias ii = Int8var mm = ii.min //这里的ii代表了Int8

Boolean 类型

Swift和java一样,对boolean类型是强要求的,不能在if里面传一个整形用于判断。



新类型——元组(Tuple)

其实就是一群数据组合,可以将其解出来输出。注意的是tuple不只是两个元素,你可以自己扩展成多个元素。

var menu = ("apple", 20)  //定义一个Tuplevar menu2 = (name: "banana", price:10)  //可以在定义的时候指定元素名字let (name,price) = menu   //解Tuple,如果某个元素不想要的话,用 _ 代替print(name, price)   //输出  apple 20print(menu.0,menu.1)  //不解Tuple直接输出print(menu2.name,menu2.price)  //利用元素名字解Tuple


可选类型(Optionals)

当一个方法可以返回一个对象的时候,它有可能返回一个空值。比如将字符串转换为数字的方法。为了处理这种情况,有了可选类型。

可选类型表示一个数据,它可能有值,也可能为空。基本语法是在类型的后面加上问号 ?

比如下面的代码

var str:Stringprint(str)  //这里报错说str没初始化
但是如果将str改为可选类型,那么这就可以输出了

var str:String?print(str)  //输出 nil

那怎么将一个可选类型转换为对应的类型呢?这里有个强制解包的概念,使用 ! 对可选类型解包。请看下面代码。 强制解包有个注意点,就是如果这个可选类型是nil的话,那么强制解包的语句会在运行时报错。

var str:String? = "fe"var s = str! //将str解包为s,但是如果str没有赋值的话,那么这句会在运行时报错print(s)

为了解决强制解包的时候,可选类型可能为nil的问题。if语句里面多了一个 Optional Binding 的概念。就是将可选类型解包后判断是否为nil,然后执行不同的分支代码

//因为没给str赋值,所以输出  str为空var str:String?if let s = str {    print("str有值")} else {    print("str为空")}


        如果在编程中,我们可以确保可选类型一定不为nil的,那么每次要将可选类型解包都要加个 !,很麻烦。所以有了隐式可选类型,它是用 ! 代替了 ? 号。然后在需要将可选类型转换为对应类型的时候就不用加 ! 了

var str:String! = "string"var s = str



基本运算

一些和C完全一样的基本运算如下

加减乘除,负号,自增(++)自减(--),+=等, 判断大小之类(==,!=,>=...),三元运算符,逻辑运算(!,&&,||)


不一样的运算符

取模%,在C中,只能对整形进行运算,Swift中可以对浮点数进行运算。结果就是多出来的那部分

比如 7.1%2.5  得到2.1,因为7.1可以最多减去2个2.5,然后剩下2.1


范围运算符 ... 和 ..< 这两个运算符可以用在for里面。比如

//输出 1 2 3    包含最后一个元素3for i in 1...3 {    print(i)}//输出 1 2  不包含最后一个元素3for i in 1..<3 {    print(i)}


??

这是一个二元运算符,例子 a ?? b

它的意思是:如果可选类型a不是nil,那么解包a并返回解包值,如果a为nil,那么返回b

相当于 a != nil ? a! : b

0 0