1. 书写格式
- 一句代码尾部可以省略“;”,多句代码写到同一行时必须用“;”分开。
print("Hello,World");print("test")
- 用
var
定义变量,let
定义常量;编译器可以自动推断出变量、常量的类型。
var a = 10
a = 20
let b = 30print(a)
print(b)
print("Hello world \(a)")
- 自动判断类型的前提:定义的时候就已经赋值了;
let age = 10
- 否则在定义的时候要指定类型.
let age: Int
age = 10
2. 常量
- 只能赋值一次;
- 它的值不要求在编译时期确定,但使用之前必须赋值一次;
var num = 10
num += 20
num += 30
let age = num
print(age)
3. 标示符
- 标示符(比如说常量名、变量名、函数名)几乎可以使用任何字符;
- 标示符不能以数字开头,不能包含空白字符、制表符、箭头等特殊字符;
func ??() {print("666")
}
??()let ? = "花"
4. 常见的数据类型
只有两种类型:值类型(value type) 和 引用类型(reference type)
-
值类型:
- 枚举(
enum
):Optional
- 结构体(
struct
):Bool
、Int
、Float
、Double
、Character
、String
、Array
、Dictionary
、Set
;
- 枚举(
-
引用类型:
- 类(
class
):
- 类(
-
整数类型:
Int8
、Int16
、Int32
、Int64
、UInt8
、UInt16
、UInt32
、UInt64
; -
一般情况下,都是直接用
Int
即可; -
整数的最值:
UInt8.max
、UIt16.min
; -
浮点类型:
Float
,32位,精度只有6位;Double
,64位,精度至少15位;Double
直接赋值就可以了,默认为double;Float
需要写清楚类型;
let letFloat: Float = 30.0
let letDouble = 30.0
5. 字面量
1). 布尔
let bool01 = true //取反是false
2). 字符串
let string01 = "字符串"
3). 字符(可存储ASCII字符、Unicode字符)
- 注意:需要指定类型,否则会按字符串处理
let chaacter01: Character = "a"
4). 整数
let intDecimal = 17 //十进制
let intBinary = 0b10001 //二进制
let intOctal = 0o21 //八进制
let intHexadecimal = 0x11 //十六进制
- 整数和浮点数可以添加额外的零或者添加下滑线来增强可读性
- 100_0000、1_000_000.000_000_1、000123456
5). 数组
let array = [1,3,5,7,9]
6). 字典
let dictionary = ["age": 18, "height": 185, "height": 70]
6. 类型转换
- 整数转换
- 要将低类型转为高类型
let int1: UInt16 = 2_000
let int2: UInt8 = 1
let int3 = int1 + UInt16(int2)
- 整数、浮点数转换
let int01 = 3
let double01 = 0.1415
let pi = Double(int01) + double01
let intPi = Int(pi)
- 字面量可以直接相加,因为数字字面量本身没有明确的类型
let result = 3 + 0.1315
7. 元组(tuple)
- 多种数据类型组合在一起
let http404Error = (404, "Not Found")
print("The status code is \(http404Error.0)")//取
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")//只取需要的
let (justTheStatusCode, _) = http404Error//组合类型
let http200Status = (statusCode: 200, description: "ok")
print("The status code is \(http200Status.statusCode)")