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来判断该字符串是否为空

数组