基本语法
- Swift 的多行注释可以嵌套在其他多行注释内部。写法是在一个多行注释块内插入另一个多行注释。第二个注释块封闭时,后面仍然接着第一个注释块
这是第一个多行注释的结尾 */
- Swift不要求在每行语句的结尾使用分号( ; ),但当在同一行书写多条语句时,必须用分号隔开
var myString = "Hello, World!"; print(myString)
- Swift语言中标识符的命名规则如下:
- 区分大小写,Myname与myname是两个不同的标识符
- 标识符首字符可以以下划线(_)或者字母开始,但不能是数字
- 标识符中其他字符可以是下划线(_)、字母或数字
注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号
- 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符。
let `class` = "Runoob"
- Swift语言并不是像C/C++,Java那样完全忽视空格,Swift对空格的使用有一定的要求,但是又不像Python对缩进的要求那么严格。
在Swift中,运算符不能直接跟在变量或常量的后面。
数据类型
-
Int
Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:
在32位平台上,Int和Int32长度相同。
在64位平台上,Int和Int64长度相同。
-
UInt
Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:
在32位平台上,UInt和UInt32长度相同。
在64位平台上,UInt和UInt64长度相同。
-
浮点数:Float、Double
Double 表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
Float 表示32位浮点数。精度要求不高的话可以使用此类型。
注意:
Double精确度很高,至少有15位数字,而 Float 最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
-
可选类型: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
变量、常量
- var 关键字声明变量
var variableName = <initial value>
- let 关键字声明常量
let constantName = <initial value>
- 明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var constantName:<data type> = <optional initial value>
可选类型
-
Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x “或者"那儿没有值”。
-
Swfit语言定义后缀?作为命名类型Optional的简写,以下两种声明是相等的:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
在这两种情况下,变量 optionalInteger 都是可选整数类型。
注意,在类型和 ?之间没有空格。
Optional 是一个含有两种情况的枚举,None 和 Some(T),用来表示可能有或可能没有值。任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ? 操作符一个合适的范围。
当你声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil。
-
强制解析
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。 这被称为可选值的强制解析(forced unwrapping)。
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
print( myString! )
}else{
print("myString 值为 nil")
}
注意:使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。
-
自动解析
在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。
-
可选绑定
使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
if let constantName = someOptional {
statements
}
var myString:String?
myString = "Hello, Swift!"
if let yourString = myString {
print("你的字符串值为 - \(yourString)")
}else{
print("你的字符串没有值")
}
字面量
-
整型字面量
整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀:
以下为一些整型字面量的实例:
let decimalInteger = 17
let binaryInteger = 0b10001
let octalInteger = 0o21
let hexadecimalInteger = 0x11
-
浮点型字面量
浮点型字面量的默认推导类型为 Swift 标准库类型中的 Double,表示64位浮点数。
浮点型字面量默认用十进制表示(无前缀),也可以用十六进制表示(加前缀 0x)。
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
-
字符串型字面量
字符串型字面量中不能包含未转义的双引号 (")、未转义的反斜线(\)、回车符或换行符。
转移字符 |
含义 |
\0 |
空字符 |
\\ |
反斜线 \ |
\b |
退格(BS) ,将当前位置移到前一列 |
\f |
换页(FF),将当前位置移到下页开头 |
\n |
换行符 |
\r |
回车符 |
\t |
水平制表符 |
\v |
垂直制表符 |
\’ |
单引号 |
\" |
双引号 |
\000 |
1到3位八进制数所代表的任意字符 |
\xhh… |
1到2位十六进制所代表的任意字符 |
运算符
-
swift3 中已经取消了++、–。
-
区间运算符
运算符 |
描述 |
实例 |
区间运算符 |
闭区间运算符(a…b)定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于等于a。 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中: |
1…5 区间值为 1, 2, 3, 4 和 5 |
开区间运算符 |
半开区间(a… |
1…< 5 区间值为 1, 2, 3, 和 4 |
-
运算符优先级
|
请发表评论