Swift 基本语法(长文解析)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在移动应用开发领域,Swift 作为苹果公司推出的编程语言,凭借其简洁、安全且高效的特性,逐渐成为开发者们的首选工具。无论是构建 iOS、macOS 还是 watchOS 应用,掌握 Swift 基本语法 是入门和进阶的关键。本文将从变量、数据类型、控制流到函数和面向对象编程等核心概念展开,通过案例和代码示例,帮助读者系统性地理解 Swift 的基础框架,同时为后续的复杂项目开发打下坚实基础。


变量与常量:数据的容器

在编程中,变量和常量是存储数据的基本工具。Swift 基本语法中,var 用于定义变量(可变值),而 let 用于定义常量(不可变值)。

变量:可变的“盒子”

变量就像一个可以随时更换内容的盒子,其值可以在程序运行过程中被修改。例如:

var score = 85  
score = 90 // 允许修改值  
print("当前分数为:\(score)") // 输出 "当前分数为:90"  

常量:密封的“保险箱”

常量则如同密封的保险箱,一旦赋值便不可更改。这有助于减少程序中的意外错误,尤其在需要固定值的场景中(如数学常数 π)。

let pi = 3.14159  
// pi = 3.14 // 这会触发编译错误  

形象比喻

可以将变量想象为“可擦写的白板”,而常量则是“写入后封存的档案袋”。这种设计既保证了灵活性,又提升了代码的安全性。


数据类型:构建程序的积木

Swift 基本语法对数据类型进行了严格的定义,这有助于减少运行时错误。以下是几种常用的数据类型:

整型与浮点型

  • 整型(Int):表示没有小数点的整数。
    let age: Int = 25  
    
  • 浮点型(Double/Float):用于存储小数,Double 精度更高,推荐优先使用。
    let height: Double = 1.75  
    

字符串:文本的容器

字符串用双引号包裹,支持通过 + 进行拼接或使用插值语法 \(variable)

var greeting = "你好," + "世界!"  
greeting = "当前温度:\(25)℃" // 输出 "当前温度:25℃"  

布尔型:二元世界的开关

布尔型(Bool)只有 truefalse 两个值,常用于条件判断:

let isRaining = true  
if isRaining {  
    print("记得带伞!")  
}  

控制流:程序的“交通指挥系统”

控制流决定了代码执行的顺序,是Swift 基本语法中实现逻辑分支的核心部分。

条件语句:判断与选择

if-else 结构通过条件表达式决定代码块的执行:

let temperature = 30  
if temperature > 30 {  
    print("天气炎热,建议待在室内。")  
} else if temperature > 20 {  
    print("天气适宜,适合户外活动。")  
} else {  
    print("气温较低,请添加衣物。")  
}  

循环:重复任务的“永动机”

for-in 循环:遍历集合

let fruits = ["苹果", "香蕉", "橙子"]  
for fruit in fruits {  
    print("我喜欢吃 \(fruit)")  
}  

while 循环:条件满足时重复执行

var count = 5  
while count > 0 {  
    print(count)  
    count -= 1  
} // 输出 5、4、3、2、1  

函数:封装逻辑的“工具箱”

函数是组织代码、提高复用性的关键。在 Swift 基本语法中,函数通过 func 关键字定义:

函数定义与调用

func greet(name: String) -> String {  
    return "你好,\(name)!欢迎来到 Swift 世界。"  
}  
let welcomeMessage = greet(name: "小明")  
print(welcomeMessage) // 输出 "你好,小明!欢迎来到 Swift 世界。"  

参数与返回值

  • 参数:函数接收的输入,可定义默认值或标记标签。
    func calculateArea(length: Double, width: Double = 1.0) -> Double {  
        return length * width  
    }  
    let area = calculateArea(length: 5) // 宽度默认为 1.0  
    
  • 返回值:使用 -> 指定返回类型,无返回值时用 Void 或省略。

面向对象编程:构建程序的“乐高积木”

Swift 是一门面向对象的语言,通过类(Class)和结构体(Struct)定义数据模型:

类与结构体:相似但有差异的容器

  • :支持继承、可选类型和引用语义。
    class Person {  
        var name: String  
        var age: Int  
        init(name: String, age: Int) {  
            self.name = name  
            self.age = age  
        }  
    }  
    let alice = Person(name: "Alice", age: 30)  
    
  • 结构体:值类型,适合轻量级数据模型。
    struct Point {  
        var x: Double  
        var y: Double  
    }  
    var origin = Point(x: 0, y: 0)  
    

继承与协议:扩展功能的“蓝图”

通过 : 关键字实现继承,而协议(Protocol)则定义方法和属性的契约:

protocol Bird {  
    func fly()  
}  
class Eagle: Bird {  
    func fly() {  
        print("老鹰在高空翱翔!")  
    }  
}  

闭包:匿名函数的“包裹”

闭包是自包含的代码块,常用于异步操作或高阶函数。其语法如下:

let numbers = [1, 2, 3, 4]  
let evenNumbers = numbers.filter { $0 % 2 == 0 } // 使用闭包筛选偶数  
print(evenNumbers) // 输出 [2,4]  

这里的 { $0 % 2 == 0 } 是一个简化的闭包,$0 表示第一个参数。


错误处理:程序的“安全网”

通过 do-try-catch 语句捕获和处理错误,确保程序稳定性:

enum MyError: Error {  
    case divisionByZero  
}  
func divide(_ a: Int, by b: Int) throws -> Int {  
    if b == 0 {  
        throw MyError.divisionByZero  
    }  
    return a / b  
}  
do {  
    let result = try divide(10, by: 0)  
    print(result)  
} catch {  
    print("错误:\(error)") // 输出 "错误:divisionByZero"  
}  

结论

掌握 Swift 基本语法是开发高质量应用的基石。本文通过变量、数据类型、控制流、函数到面向对象编程的讲解,系统化地梳理了 Swift 的核心概念,并提供了大量代码示例。建议读者通过实践项目巩固知识,例如开发一个简单的计算器或待办事项应用。随着对语法的深入理解,开发者可以逐步探索更高级的主题,如内存管理、并发编程和框架集成,从而在苹果生态中实现更复杂的功能。

提示:学习过程中,可结合官方文档和 playground 工具进行实时调试,这将显著提升学习效率。

最新发布