Swift 是一种强大且直观的编程语言,用于构建基于 Apple 平台的应用程序。它结合了 C 和 Objective-C 的优点,并摒弃了兼容性限制,提供了现代化的编程特性,使代码更安全、更快速、更简洁。
变量与常量
Swift 中定义变量和常量需要使用 let 和 var 关键字。let 用于声明不可改变的常量,而 var 用于声明可变的变量。
let myConstant = 42 var myVariable = 42 myVariable = 43
数据类型
Swift 提供了多种数据类型,包括但不限于整型、浮点型、布尔型、字符串等。
整型
整型分为有符号和无符号两种,常用的有 Int8, Int16, Int32, Int64 和 UInt8, UInt16, UInt32, UInt64。
let age: Int = 25
浮点型
浮点型包括 Float 和 Double,前者通常用于存储精度较低的数据,后者用于高精度计算。
let pi: Double = 3.14159
布尔型
布尔型只有 true 和 false 两个值。
let isRaining = true
字符串
Swift 中的字符串可以使用双引号来定义。
let greeting = "Hello, world!"
类型推断
Swift 允许编译器自动推断变量的类型,因此在定义变量时可以省略类型标注。
let name = "John Doe"
元组
元组允许将多个不同类型的数据组合在一起。
let http404Error = (404, "Not Found")
字典与数组
Swift 支持字典和数组,它们是容器类数据结构。
数组
var shoppingList: [String] = ["Eggs", "Milk"]
字典
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]控制流
Swift 提供了多种控制流语句来处理逻辑分支和循环。
条件语句
if 语句
let someCharacter: Character = "e"
if someCharacter == "a" {
print("It's an 'a'!")
}switch 语句
// www.javascriptcn.com code example
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watermelon":
print("That would make a good smoothie.")
default:
print("Everything tastes good in soup.")
}循环
for-in 循环
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}while 循环
var i = 0
while i < 5 {
print(i)
i += 1
}跳转语句
break
break 用于立即退出循环或 switch 语句。
outerLoop: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 {
break outerLoop
}
print("i = \(i), j = \(j)")
}
}continue
continue 用于跳过当前循环体的剩余部分并开始下一次迭代。
for i in 1...5 {
if i % 2 == 0 {
continue
}
print(i)
}函数
函数是一段执行特定任务的代码块。
定义与调用
func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
print(greet(name: "Bob", day: "Tuesday"))参数标签
参数标签允许你在调用函数时指定参数的名称。
func sayHello(to name: String) -> String {
return "Hello \(name)"
}
print(sayHello(to: "Alice"))可选参数
函数可以接受可选参数,这些参数可以被省略。
// www.javascriptcn.com code example
func makeASandwich(with ingredient: String? = nil) {
if let ingredient = ingredient {
print("Adding \(ingredient)")
}
print("Making sandwich")
}
makeASandwich()
makeASandwich(with: "Ham")可变参数
你可以定义函数接收可变数量的参数。
// www.javascriptcn.com code example
func arithmeticMean(_ numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
print(arithmeticMean(1, 2, 3))面向对象编程
Swift 支持面向对象编程,包括类、结构体、枚举等。
类与实例
// www.javascriptcn.com code example
class Person {
var name: String
init(name: String) {
self.name = name
}
func greet() {
print("Hello, I'm \(name)")
}
}
let person = Person(name: "Alice")
person.greet()继承
// www.javascriptcn.com code example
class Student: Person {
var school: String
init(name: String, school: String) {
self.school = school
super.init(name: name)
}
override func greet() {
print("Hi, I'm \(name), studying at \(school)")
}
}
let student = Student(name: "Bob", school: "XYZ School")
student.greet()枚举
枚举是一种定义一组命名值的方式。
// www.javascriptcn.com code example
enum CompassPoint {
case north
case south
case east
case west
}
var directionToHead = CompassPoint.west
directionToHead = .east协议
协议定义了一组方法和属性,类、结构体和枚举都可以采用协议。
// www.javascriptcn.com code example
protocol Named {
var name: String { get set }
}
struct Person2: Named {
var name: String
}
let person2 = Person2(name: "John")
print(person2.name)泛型
泛型允许你编写能够处理任意数据类型的函数和类。
// www.javascriptcn.com code example
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}
var someInt = 3
var anotherInt = 107
swapTwoValues(&someInt, &anotherInt)
print(someInt)
print(anotherInt)以上是 Swift 基本语法的一部分,涵盖了变量与常量、数据类型、控制流、函数以及面向对象编程的基础知识。这些内容为理解和使用 Swift 进行应用开发打下了坚实的基础。