swift学习笔记
第一个项目
创建 OS X playground 需要引入 Cocoa
import Cocoa var myString = "Hello, World" print(myString)
创建ios playground 需要引入 UIKit
improt UIKit var str = "Hello, World" print(str)
注释
1. // 单行注释 2. /* 多行注释, 可以跨行*/ 3. /* 第一行注释 /*嵌套的第二行注释*/ 第三行结尾*/
分号
swift不要求每行语句使用(;)结束,但是一行书写多行时,必须用(;)隔开
improt UIKit var str = "Hello, World"; print(str)
标识符
1. 区分大小写
2. 可以以字母和下划线_开头,但不能以数字开头
3. 中间可以是下划线_,字母和数字
4. 如果使用关键字作为标识符,可以在关键字前后添加重音符号(`)
例如:
let `class` = "hello"
关键字
含有以下四种:
1. 与声明有关的关键字:class、 deinit、 enum、 extension、func 、import、 init、 internallet 、operator 、private 、protocol、public、 static 、struct 、subscript、typealias 、var
2. 与语句有关的关键字: break 、case、 continue 、default、do 、else 、fallthrough、 for、if、 in、 return 、switch、where、 while
3. 表达式和类型关键字: as 、dynamicType、 false、 is、 nil、 self、 Self 、supertrue 、_COLUMN_、 _FILE_、 _FUNCTION_、_LINE_
4. 在特定上下文中使用的关键字: associativity、 convenience 、dynamic 、didSet、final、 get 、infix、 inout、lazy、 left 、mutating 、none、nonmutating 、optional 、override 、postfi、precedence 、prefix 、Protocol 、required、
right、 set 、Type、 unowned、weak 、willSet
空格
swift不忽视空格
字面量
自动识别类型
1 // 整形字面量 2.1 // 浮点型字面量 "hello" // 字符串型字面量 true // 布尔型字面量
打印输出
使用print 进行输出
数据类型
任何编程语言都需要使用各种数据类型来存储不同的信息,以便于决定这些信息如何存储在计算机的内存中
swift提供了非常丰富的数据类型,常用的有以下几种:
Int
和数据库定义Int不同,swift不需要专门指定证书的长度,他的长度等于当前平台的原生字长,即:
32位平台上,Int的长度为32
64位平台上,Int的长度为64
如果有特殊需求,也可以自己规定Int长度,如Int10, Int6
UInt
无符号类型
注意: 尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断。
Float Double
浮点数类型比整型表示的范围更大:
Double表示64位浮点数,最少有15位
Float表示32位浮点数,最少有6位
Bool
不同于js,swift的布尔类型叫做Bool,表示true或者false,nil 表示没有值。
String
和js完全一样
Character
只能是单个字母
例如:
var c = 2
Optional
可选类型,用来处理可能缺失的值
类型数值范围
类型 大小(字节) 区间值 Int8 1 字节 -128 到 127 UInt8 1 字节 0 到 255 Int32 4 字节 -2147483648 到 2147483647 UInt32 4 字节 0 到 4294967295 Int64 8 字节 -9223372036854775808 到 9223372036854775807 UInt64 8 字节 0 到 18446744073709551615 Float 4 字节 1.2E-38 到 3.4E+38 (~6 digits) Double 8 字节 2.3E-308 到 1.7E+308 (~15 digits)
类型别名
类型别名可以对当前的类型定义另一个名字,通过typealias关键字类定义
语法如下:
typealias newname = type
例如定义Int的类型别名位Zoom
typealias Zoom = Int
因此,我们可以用别名来定义常量
import Cocoa typealias Zoom = Int var str: Zoom = "hello" print(str)
类型安全
swift是一个类型安全的语言,所以,在编译代码是会进行类型检查,并把不匹配的类型标记为错误,因此,swift我们也可以称其为动态类型的强类型语言
import Cocoa var num = 1 num = "hello" print(num)
运行后,会在Xcode中报错:
error: cannot assign value of type 'String' to type 'Int' num = "hello"
也就是我们不能把string类型的赋值给Int类型
类型推断
也就是说当你没有显示的规定数据类型的时候,swift会使用类型推断来选择合适的类型
例如:
var a = 1 // a为Int类型 var b = "333" // b为String var c = 1 + 2.333 // c为Double类型
常量
和js不同,swift常量的定义是用let,定义之后不能修改,也可以指定类型声明, 例如:
let Int: num = 1
转义
转义字符 含义 \0 空字符 \\ 反斜线 \ \b 退格(BS) ,将当前位置移到前一列 \f 换页(FF),将当前位置移到下页开头 \n 换行符 \r 回车符 \t 水平制表符 \v 垂直制表符 \' 单引号 \" 双引号 \000 1到3位八进制数所代表的任意字符 \xhh... 1到2位十六进制所代表的任意字符
运算符
swift提供以下运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 区间运算符
- 其他运算符
其用法和js类似,这里不多做介绍
条件语句
swift支持if…else语句以及switch,并且支持三元运算符,用法和js一样
循环语句
for…in: 用来遍历一个集合,即使是一个字符串,也能通过for…in…遍历,注意swift的循环是从1开始的
例如:
import Cocoa for i in 1...5 { print(i) } //1 //2 //3 //4 //5
var arr:[String] = ['a','b,'c']
for i in arr {
pring('i的值为/(i)')
}
// a
// b
// c
while: 当为真时做一些事情
例如:
import Cocoa while 1 < 2 { print('yes') }
repeat…while: 先执行,执行完后判断
例如:
import Cocoa repeat { print('yes') }while 1 < 2
循环控制语句
循环控制语句改变你代码的执行顺序,通过它你可以实现代码的跳转。Swift 以下几种循环控制语句
控制语句 | 描述 |
---|---|
continue 语句 |
告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。 |
break 语句 |
中断当前循环。 |
fallthrough 语句 |
如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。 |
字符串
字符串通常用isEmpty来判断该字符串是否为空
数组