Swift-初级
Swift-初级
1 变量和常量
1.1. 变量(var)
提示: macOS Playground 中的另一行代码是
import Cocoa,它引入了 Apple 提供的大量代码,旨在简化应用开发
- 文本是用双引号括起来的
- Swift 确实允许使用分号,但非常少见——只有当你出于某种原因需要在同一行编写两段代码时才需要用到分号。
1
2
3
var name = "Ted"
name = "Rebecca"
name = "Keeley"
1.2. 常量(let)
如果可以,尽量使用常量而不是变量——这不仅能让 Swift 更好地优化你的代码,还能确保你永远不会意外地改变常量的值
1
2
3
let character = "Daphne"
// character = "Eloise" X
// let character = "Francesca" X
2 字符串("")
提示:
- Swift 中的字符串区分大小写
2.1. 基本字符串
- 双引号开头和结尾
- 标点符号、表情符号和其他字符
- 使用其他双引号,只要注意在它们前面加上反斜杠
1
2
3
4
let actor = "Denzel Washington"
let filename = "paris.jpg"
let result = "⭐️ You win! ⭐️"
let quote = "Then he tapped a sign saying \"Believe\" and walked away."
2.2. 多行字符串(""")
字符串两侧不是只用一组引号,而是用三组引号
1
2
3
4
5
let movie = """
A day in
the life of an
Apple engineer
"""
2.3. 字符串常用函数
xxx.count–属性1
print(actor.count)
xxx.uppercased()1
print(result.uppercased())
xxx.hasPrefix()1
print(movie.hasPrefix("A day"))
xxx.hasSuffix()1
print(filename.hasSuffix(".jpg"))
2.4. 字符串拼接
注意:不要过度使用
+
1 let luggageCode = "1" + "2" + "3" + "4" + "5"Swift 无法一次性连接所有这些字符串。它会先连接前两个字符串得到“12”,然后将“12”和“3”连接得到“123”,接着连接“123”和“4”得到“1234”,最后连接“1234”和“5”得到“12345”——它会创建临时字符串来存储“12”、“123”和“1234”,即使这些字符串在代码执行完毕后最终并没有被使用。
+1 2 3 4
let people = "Haters" let action = "hate" let lyric = people + " gonna " + action print(lyric)
不同类型相机是不允许的:x:
1 2 3 4
let number = 11 // let missionMessage = "Apollo " + number + " landed on the moon." // X let missionMessage = "Apollo " + String(number) + " landed on the moon." // or let missionMessage = "Apollo \(number) landed on the moon."
串插值(
\(xxx))1 2 3 4
let name = "Taylor" let age = 26 let message = "Hello, my name is \(name) and I'm \(age) years old." print(message)
3 整数(Int)
3.1. 基础
- 用下划线(
_)来随意分隔数字+=、-=、*=、/=
1
2
3
4
5
6
7
let reallyBig = 100_000_000 // or let reallyBig = 1_00__00___00____00
var counter = 10
counter = counter + 5
counter += 5
counter /= 2
print(counter)
print(9/2) // 4
3.2. 常用函数
n.isMultiple(of: m)n是否是m的倍数
1
print(120.isMultiple(of: 3)) // true
4 浮点数(Double)
精度并非 100%——在需要 100% 精度的情况下,例如处理货币时,不应该使用它们
1
2
let number = 0.1 + 0.2
print(number) // 0.30000000000000004
类型安全 :Swift 不允许我们意外地混合使用不同类型的数据
1
2
3
4
let a = 1
let b = 2.0
// let c = a + b //X
let c = a + Int(b) // or let c = Double(a) + b
CGFloat
1
2
3
var rating = 5.0
rating *= 2 //CGFloat // 2.0
print(rating) // 10.0
5 布尔值(Bool)
5.1. 基础
1
2
var isAuthenticated = false
isAuthenticated = !isAuthenticated
5.2. 常用函数
b.toggle():反转 =!b
6 数组(Array)
6.1. 基础
初始创建
var beatles = ["John", "Paul", "George", "Ringo"]var beatles : [String] = ["John", "Paul", "George", "Ringo"]var beatles = [String]()var beatles = Array<String>()
1 2 3 4 5 6
var beatles = ["John", "Paul", "George", "Ringo"] let numbers = [4, 8, 15, 16, 23, 42] var temperatures = [25.3, 28.2, 26.4] var scores = Array<Int>() scores.append(100) var albums = [String]()
取值
索引从0开始
提示: 请确保您请求的索引处存在项目,否则您的代码将崩溃——您的应用程序将停止工作。
1 2 3
print(beatles[0]) print(numbers[1]) print(temperatures[2])
添加新元素
arr.append(a)数组一次只能包含一种类型
1 2
beatles.append("Adrian") //temperatures.append("Chris") //X
6.2. 常用函数
arr.count:读取数组中元素的数量1
print(beatles.count)
arr.remove(at:n):删除元素1
beatles.remove(at: 2)
arr.removeAll():删除所有元素1
beatles.removeAll()
arr.contains():检查数组是否包含特定元素
1
beatles.contains("Ringo")
arr.sorted():对数组进行排序
1
beatles.sorted()
arr.reversed():反转数组 不再是一个简单的数组提示: Swift 在反转数组时非常智能——它实际上并不会重新排列所有元素,而是记住你想要反转元素的顺序。所以,当你打印出
reversedPresidents时,不要惊讶地发现它不再是一个简单的数组了!1 2 3
let presidents = ["Bush", "Obama", "Trump", "Biden"] let reversedPresidents = presidents.reversed() print(reversedPresidents)// ReversedCollection<Array<String>>(_base: ["Bush", "Obama", "Trump", "Biden"])