1. 变量与常量
1.1 概念
变量(Variable):可以随时修改的值,使用
var关键字声明常量(Constant):一旦设置就不能修改的值,使用
let关键字声明
1.2 原理
Swift是一门类型安全的语言,编译器会在编译时检查类型,确保变量和常量的使用符合其类型定义。使用常量可以提高代码的安全性和可读性,减少错误。
1.3 使用示例
// 声明常量
let maximumNumberOfLoginAttempts = 10
// 声明变量
var currentLoginAttempt = 0
// 修改变量
currentLoginAttempt += 1
// 类型标注
var welcomeMessage: String
welcomeMessage = "Hello, Swift!"
2. 数据类型
2.1 基本数据类型
Swift提供了多种基本数据类型,包括:
2.2 类型推断
Swift编译器可以根据初始值自动推断变量或常量的类型,无需显式标注。
2.3 使用示例
// 类型推断
let meaningOfLife = 42 // Int类型
let pi = 3.14159 // Double类型
let isSwiftFun = true // Bool类型
let greeting = "Hello" // String类型
let letterA: Character = "A" // 显式标注字符类型
3. 运算符
3.1 算术运算符
加法:
+减法:
-乘法:
*除法:
/取余:
%
3.2 比较运算符
等于:
==不等于:
!=大于:
>小于:
<大于等于:
>=小于等于:
<=
3.3 逻辑运算符
逻辑与:
&&逻辑或:
||逻辑非:
!
3.4 赋值运算符
简单赋值:
=复合赋值:
+=,-=,*=,/=等
3.5 使用示例
// 算术运算符
let sum = 1 + 2
let difference = 5 - 3
let product = 2 * 3
let quotient = 10 / 2
let remainder = 10 % 3
// 比较运算符
let isEqual = (sum == 3)
let isGreater = (product > 5)
// 逻辑运算符
let isBothTrue = (isEqual && isGreater)
let isEitherTrue = (isEqual || false)
let isNotTrue = !false
// 赋值运算符
var count = 0
count += 1 // 等同于 count = count + 1
4. 控制流
4.1 条件语句
4.1.1 if-else
var temperatureInFahrenheit = 30
if temperatureInFahrenheit <= 32 {
print("It's freezing!")
} else if temperatureInFahrenheit >= 86 {
print("It's boiling!")
} else {
print("It's comfortable.")
}
4.1.2 switch
Swift的switch语句比其他语言更强大,可以处理多种类型,并且必须覆盖所有可能的情况。
let someCharacter: Character = "e"
switch someCharacter {
case "a", "e", "i", "o", "u":
print("\(someCharacter) is a vowel")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
print("\(someCharacter) is a consonant")
default:
print("\(someCharacter) is not a letter")
}
4.2 循环语句
4.2.1 for-in
用于遍历序列(如数组、范围、字符串等)。
// 遍历范围
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 遍历数组
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print("Hello, \(name)!")
}
// 遍历字典
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
4.2.2 while
在条件为真时重复执行。
var whileCount = 0
while whileCount < 5 {
print("whileCount is \(whileCount)")
whileCount += 1
}
4.2.3 repeat-while
先执行循环体,再检查条件,至少执行一次。
var repeatCount = 0
repeat {
print("repeatCount is \(repeatCount)")
repeatCount += 1
} while repeatCount < 5
5. 字符串与字符
5.1 字符串
5.1.1 概念
字符串是一系列字符的集合,使用String类型表示。
5.1.2 原理
Swift的字符串是值类型,当被传递给函数或赋值给其他变量时,会被复制。Swift使用UTF-8编码存储字符串,支持多种语言。
5.1.3 使用示例
// 创建字符串
let string1 = "Hello"
let string2 = String("World")
// 字符串拼接
let greeting = string1 + " " + string2
// 字符串插值
let apples = 3
let appleSummary = "I have \(apples) apples"
// 字符串长度
let length = greeting.count
// 字符串比较
let isEqual = (string1 == "Hello")
// 字符串子串
let substring = greeting.prefix(5) // "Hello"
let suffix = greeting.suffix(5) // "World"
5.2 字符
5.2.3 使用示例
// 创建字符
let char1: Character = "a"
let char2 = Character("b")
// 字符数组
let chars: [Character] = ["c", "a", "t"]
let stringFromChars = String(chars) // "cat"
6. 数组
6.1 概念
数组是有序的元素集合,使用Array类型表示,也可以使用简写形式[Element]。
6.2 原理
Swift数组是值类型,当被传递或赋值时会被复制。数组的元素必须是相同类型。
6.3 使用示例
// 创建数组
var someInts: [Int] = [1, 2, 3, 4, 5]
var emptyArray = [String]()
var repeatingArray = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]
// 访问和修改数组
let firstElement = someInts[0]
someInts.append(6)
someInts[0] = 100
// 数组长度
let count = someInts.count
// 检查数组是否为空
let isEmpty = someInts.isEmpty
// 遍历数组
for int in someInts {
print(int)
}
for (index, value) in someInts.enumerated() {
print("Item \(index + 1): \(value)")
}
// 数组操作
someInts.insert(200, at: 1)
let removedInt = someInts.remove(at: 2)
someInts.removeLast()
7. 集合
7.1 概念
集合是无序的唯一元素集合,使用Set类型表示。
7.2 原理
集合中的元素必须遵循Hashable协议,确保元素的唯一性。集合是值类型,传递或赋值时会被复制。
7.3 使用示例
// 创建集合
var letters = Set<Character>()
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// 访问和修改集合
letters.insert("a")
favoriteGenres.insert("Jazz")
// 集合大小
let count = favoriteGenres.count
// 检查集合是否为空
let isEmpty = favoriteGenres.isEmpty
// 检查元素是否存在
let containsRock = favoriteGenres.contains("Rock")
// 遍历集合
for genre in favoriteGenres {
print("\(genre)")
}
// 集合操作
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
// 并集
let union = oddDigits.union(evenDigits) // {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// 交集
let intersection = oddDigits.intersection(singleDigitPrimeNumbers) // {3, 5, 7}
// 差集
let subtracting = oddDigits.subtracting(singleDigitPrimeNumbers) // {1, 9}
8. 字典
8.1 概念
字典是无序的键值对集合,使用Dictionary类型表示,也可以使用简写形式[Key: Value]。
8.2 原理
字典的键必须遵循Hashable协议,确保键的唯一性。字典是值类型,传递或赋值时会被复制。
8.3 使用示例
// 创建字典
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
var emptyDictionary = [String: Int]()
// 访问和修改字典
let airportName = airports["YYZ"] // 可选类型 String?
airports["LHR"] = "London Heathrow"
airports["YYZ"] = "Toronto International" // 更新值
// 字典大小
let count = airports.count
// 检查字典是否为空
let isEmpty = airports.isEmpty
// 遍历字典
for (airportCode, airportName) in airports {
print("\(airportCode): \(airportName)")
}
// 遍历所有键
for airportCode in airports.keys {
print("Airport code: \(airportCode)")
}
// 遍历所有值
for airportName in airports.values {
print("Airport name: \(airportName)")
}
// 删除键值对
airports["DUB"] = nil // 删除DUB对应的键值对
let removedValue = airports.removeValue(forKey: "LHR") // 删除并返回值
9. 总结
Swift基础语法是Swift开发的基石,掌握好这些基础概念对于后续学习面向对象编程、函数式编程以及iOS开发至关重要。本教程涵盖了Swift的核心基础语法,包括:
变量与常量的声明和使用
基本数据类型和类型推断
各种运算符的使用
控制流语句(if-else, switch, for, while, repeat-while)
字符串和字符的操作
数组、集合和字典的使用
通过大量的代码示例,你可以更好地理解这些概念的实际应用。建议在学习过程中多动手编写代码,加深对这些概念的理解和掌握。
10. 练习
声明一个常量
pi,值为3.14159,然后计算半径为5的圆的面积和周长。创建一个字符串数组,包含5个水果名称,然后遍历数组并打印每个水果。
使用switch语句判断一个整数是奇数还是偶数。
创建一个字典,包含5个学生的姓名和分数,然后计算平均分。
使用集合去除数组中的重复元素。
通过这些练习,你可以巩固所学的Swift基础语法知识,为后续的学习打下坚实的基础。