johnhao
johnhao
发布于 2018-03-05 / 7 阅读
0

Swift-基础语法教程

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提供了多种基本数据类型,包括:

类型

描述

示例

Int

整数类型

42

Double

双精度浮点数

3.14159

Float

单精度浮点数

3.14

Bool

布尔值

truefalse

String

字符串

"Hello"

Character

字符

"a"

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. 练习

  1. 声明一个常量pi,值为3.14159,然后计算半径为5的圆的面积和周长。

  2. 创建一个字符串数组,包含5个水果名称,然后遍历数组并打印每个水果。

  3. 使用switch语句判断一个整数是奇数还是偶数。

  4. 创建一个字典,包含5个学生的姓名和分数,然后计算平均分。

  5. 使用集合去除数组中的重复元素。

通过这些练习,你可以巩固所学的Swift基础语法知识,为后续的学习打下坚实的基础。