Swift从入门到精通02 - 基础部分

191 阅读2分钟

常量

let age = 10
  • 只能赋值一次
  • 它的值不要求在编译时期确定,但使用之前必须赋值1次
var num = 10
num += 20
num += 30
let age = num//此时age的值在编译时期不能确定
func getAge() -> Int {
    return 10
}
let age = getAge()
print(age)
  • 常量、变量在初始化(赋值)之前,都不能使用
    截屏2020-07-09 下午9.20.52.png
  • 没有指明类型会报错

标识符

  • 标识符(比如常量名、变量名、函数名)几乎可以使用任何字符
func 🐂🍺 () {
    print("666")
}
🐂🍺()
let 👽 = "ET"
var 🥛 = "milk"
  • 标识符不能以数字开头,不能包含空白字符、制表符、箭头等特殊字符

常见数据类型

截屏2020-07-09 下午9.30.11.png

  • 整数类型:Int8(8bit,1字节)Int16(16bit,2字节)Int32Int64U(unsigned的简称)Int8UInt16UInt32UInt64
  • 在32bit平台,Int等价于Int32, 在64bit平台,Int等价于Int64
  • 整数的最值:UInt8.maxInt16.min
  • 一般情况下,都是直接使用Int即可
  • 浮点类型:Float,32位,精度只有6位;Double,64位,精度至少15位
let letFloat: Float = 30.0
let letDouble = 30.0 //在不声明的情况下,默认是Double类型

字面量

  • 布尔
let bool = true //取反是false
  • 字符串
let string = "string"
  • 字符(可存储ASCII字符、Unicode字符)
let character: Character = "🐶"
  • 整数
let intDecimal = 17 //十进制
let intBinary = 0b10001 //二进制
let intOctal = 0o21 //八进制
let intHexadecimal = 0x11 //十六进制
  • 浮点数
let doubleDecimal = 125.0 //十进制,等价于1.25e2,0.0125 = 1.25e-2
let doubleHexadecimal1 = 0xFp2 //十六进制,意味着15x2^2,相当于十进制的60.0
let doubleHexadecimal2 = 0xFp-2 // 十六进制,意味着15x2^-2,相当于十进制的3.75
//以下都表示12.1875
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0

整数和浮点数可以添加额外的零或者添加下划线来增强可读性: 100_0000 1_000_000.000_000_1 000123.456

  • 数组
let array = [1,3,5,7.9]
  • 字典
let dictionary = ["age" : 18, "height": 168, "weight" : 120]

类型转换

  • 整数转换(需要占位少的转换成占位多的
let int1: UInt16 = 2_000
let int2: UInt8 = 1
let int3 = int1 + UInt16(int2)
  • 整数和浮点数转换(有明确类型的值不能直接相加,需要转换
let int = 3
let double = 0.14159
let pi = Double(int) + double
let intPi = Int(pi)
  • 字面量可以直接相加,因为数字字面量本身没有明确的类型
let result = 3 + 0.14159

元组

  • 多种数据类型组合在一起,可通过下标来访问元素
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)")
// 输出“The status code is 200”
print("The status message is \(http200Status.description)")
// 输出“The status message is OK”