本文主要用于须要快速了解 Swift 的基础知识。包含五大块:html
推荐你们用 Xcode 的 Playground 来了解、练习 Swift 的基础知识。swift
本文内容基于 Swift 5.3.
数组
在 Swift 中,经过 let 来声明常量,var 来声明变量。markdown
用 let 修饰的常量赋值后不可修改。app
let name = "Swift"
// 这句代码会报错:Cannot assign to value: 'name' is a 'let' constant
name = "Objective-C"
复制代码
用 var 修饰的变量在赋值后仍能够修改它的值。ide
var age = 2012
age = 2011
复制代码
Tips: Swift 是能够自动进行类型推断的,Compiler 会根据你的赋值自动推断其类型。因此在声明常量或变量的时候能够不写其类型。
函数
好比下面的代码是等效的:oop
var age = 2012
var age: Int = 2012
复制代码
if 后的判断条件不须要写小括号。ui
let age = 18
if age < 18 {
print("Denied")
} else {
print("Allow")
}
复制代码
在 Swift 中,弃用了 for(int i = 0; i <= 10, i++) 这种方式,而是采起了更加简洁的 for-in 。spa
// 0...10 等价于 [0...10]
for i in 0...10 {
print(i)
}
// 0...10 等价于 [0...10)
for i in 0..<10 {
print(i)
}
复制代码
var count = 10
while count > 0 {
print(count)
count -= 1
}
复制代码
须要特别指出的是:Swift 不支持 count--
或 --count
这种语法,由于这种代码比较容易出错,且不易于阅读。
经过 func 关键字来声明函数。
// 无参无返回值
func doSomething() { }
// 有参无返回值
func doSomething(parameter: Int) { }
// 多个参无返回值。parameter1 、parameter2 只为示意,真实项目中的代码不要这样命名。
func doSomething(parameter1: Int, parameter2: Int) -> Int { return 0 }
// 有参有返回值
func doSomething(parameter: Int) -> Int { return 0 }
复制代码
func doSomething(parameter: inout Int) { }
复制代码
func doSomething(parameter: Int) { }
doSomething(parameter: 10)
func doSomething1(_ parameter: Int) { }
doSomething1(10)
复制代码
func doSomething(parameter: Int = 1024) { }
// parameter 默认值为 1024
doSomething()
复制代码
Array:用来存储一组同类型、有序的数据。
// 声明
var nums = [1, 2, 3, 4]
// 尾部添加
nums.append(5) // 1 2 3 4 5
// 移除第一个元素
nums.remove(at: 0) // 2 3 4 5
// 移除尾部元素
nums.removeLast() // 2 3 4
// 移除首部元素
nums.removeFirst() // 3 4
// 在 index 为 2 的位置插入 10
nums.insert(10, at: 2) // 3 4 10
// 删除所有元素
nums.removeAll() // []
复制代码
Dictionary:用来存储键值对,它的 key 是惟一的,且数据是无序的。
// 声明
var goods = ["name": "appale", "price": "20"]
// 添加键值对
goods["weight"] = "10.0" // ["name": "appale", "weight": "10.0", "price": "20"]
// 修改
goods["name"] = "orange" // ["price": "20", "name": "orange", "weight": "10.0"]
// 获取全部的 key
goods.keys //["name", "price", "weight"]
// 移除某个键值对
goods["name"] = nil // ["price": "20", "weight": "10.0"]
// 移除全部元素
goods.removeAll()
复制代码
Set:用来存储一组同类型、无序、值惟一的数据。
// 声明
var set = Set<Int>()
// 添加元素
set.insert(10) // [10]
set.insert(20) // [20, 10]
// 由于 set 值惟一,因此仍是 [20, 10]
set.insert(10) // [20, 10]
// 移除头部元素
set.removeFirst() // [10] 或者 [20]
// 移除全部元素
set.removeAll()
复制代码
用 struct 关键字修饰,能够声明属性和函数。
// 定义
struct Person {
let name: String
let age: Int
func run() { }
}
// 使用
let person = Person(name: "jack", age: 10)
person.run()
复制代码
let jack = Person(name: "jack", age: 10)
var rose = jack
// 虽然 rose 的内容是从 jack 来的,但修改 rose 的 name 属性并不会影响 jack 的name 属性。
rose.name = "rose"
print(rose.name, jack.name) // rose jack
复制代码
用 class 关键字修饰,能够声明属性和函数。
// 声明
class Person {
var name: String
let age: Int
func run() { }
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// 使用
let jack = Person(name: "jack", age: 10)
var rose = jack
rose.name = "rose"
print(rose.name, jack.name) // rose rose
复制代码