当前位置: 首页 > news >正文

HoRain云--Swift入门:从零掌握基础语法

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

Swift 基本语法详解

一、基本结构

1. Hello World 程序

2. 注释

二、变量与常量

1. 变量 (var)

2. 常量 (let)

3. 命名规范

三、基本数据类型

1. 整型 (Int)

2. 浮点型

3. 布尔型 (Bool)

4. 字符串 (String)

5. 字符 (Character)

四、可选类型 (Optionals)

1. 声明可选类型

2. 强制解包

3. 可选绑定 (推荐)

4. 空合并运算符

五、集合类型

1. 数组 (Array)

2. 字典 (Dictionary)

3. 集合 (Set)

六、控制流

1. if 语句

2. switch 语句

3. for 循环

4. while 循环

七、函数

1. 基本函数定义

2. 参数标签

3. 默认参数值

4. 返回多个值(元组)

八、枚举 (Enum)

九、类型别名

十、错误处理

学习建议


Swift 基本语法详解

Swift 是 Apple 开发的现代编程语言,语法简洁、类型安全、性能优异。下面为您详细介绍 Swift 的基本语法,适合初学者快速入门。

一、基本结构

1. Hello World 程序

import UIKit // iOS开发 // 或 import Cocoa // macOS开发 print("Hello, World!")

2. 注释

// 单行注释 /* 多行注释 可以写多行内容 */ /// 文档注释(用于生成文档)

二、变量与常量

1. 变量 (var)

值可以改变的存储容器

// 显式声明类型 var age: Int = 25 var name: String = "张三" // 类型推断(推荐) var score = 95.5 // 自动推断为Double var isStudent = true // 自动推断为Bool

2. 常量 (let)

值一旦设定就不能更改

let pi = 3.14159 let maxScore = 100 let appName = "SwiftApp" // 常量不能重新赋值 // pi = 3.14 // 这会报错

3. 命名规范

三、基本数据类型

1. 整型 (Int)

var intNum: Int = 42 var int8Num: Int8 = 127 // 8位有符号整数 var int16Num: Int16 = 32767 // 16位有符号整数 var uintNum: UInt = 100 // 无符号整数

2. 浮点型

var floatNum: Float = 3.14 // 32位浮点数 var doubleNum: Double = 3.1415926535 // 64位浮点数(推荐) // 类型推断 var piValue = 3.14159 // 自动推断为Double

3. 布尔型 (Bool)

var isSwift = true var isJava = false if isSwift { print("这是Swift语言") }

4. 字符串 (String)

var greeting = "Hello, Swift!" var emptyString = "" // 字符串拼接 var firstName = "张" var lastName = "三" var fullName = firstName + lastName // "张三" // 字符串插值 var age = 25 var message = "我今年 \(age) 岁" // "我今年25岁" // 多行字符串 var multilineString = """ 这是多行字符串 可以包含多行内容 使用三个双引号包裹 """

5. 字符 (Character)

var singleChar: Character = "A" var chineseChar: Character = "中" // 字符串与字符 var str = "Swift" for char in str { print(char) // 逐个字符打印 }

四、可选类型 (Optionals)

Swift 的核心特性之一,用于处理值可能缺失的情况

1. 声明可选类型

var optionalName: String? = "张三" // 可能包含String,也可能为nil var optionalAge: Int? = nil // 明确设置为nil

2. 强制解包

var optionalValue: String? = "Hello" print(optionalValue!) // 使用!强制解包,如果为nil会崩溃

3. 可选绑定 (推荐)

if let name = optionalName { print("名字是: \(name)") // name在if块内是String类型 } else { print("没有名字") }

4. 空合并运算符

var nickName: String? = nil var realName = "张三" var displayName = nickName ?? realName // 如果nickName为nil,使用realName

五、集合类型

1. 数组 (Array)

// 显式声明 var numbers: [Int] = [1, 2, 3, 4, 5] // 类型推断 var fruits = ["苹果", "香蕉", "橙子"] // 空数组 var emptyArray = [String]() // 访问元素 print(fruits[0]) // "苹果" // 修改元素 fruits[1] = "葡萄" // 添加元素 fruits.append("西瓜") fruits += ["芒果", "菠萝"]

2. 字典 (Dictionary)

// 显式声明 var scores: [String: Int] = ["张三": 95, "李四": 88] // 类型推断 var person = ["name": "张三", "age": 25] // 空字典 var emptyDict = [String: Int]() // 访问值 print(scores["张三"]) // Optional(95) // 添加/修改值 scores["王五"] = 92 scores["张三"] = 98 // 修改现有值 // 删除值 scores["李四"] = nil

3. 集合 (Set)

// 声明集合 var fruitsSet: Set<String> = ["苹果", "香蕉", "橙子"] var numbersSet = Set([1, 2, 3, 2, 1]) // 自动去重 // 添加元素 fruitsSet.insert("葡萄") // 删除元素 fruitsSet.remove("香蕉") // 检查包含 if fruitsSet.contains("苹果") { print("包含苹果") }

六、控制流

1. if 语句

var temperature = 25 if temperature > 30 { print("很热") } else if temperature > 20 { print("舒适") // 这个分支会被执行 } else { print("有点冷") } // 条件可以不加括号 if temperature > 20 { print("温度适宜") }

2. switch 语句

var grade = "A" switch grade { case "A": print("优秀") case "B": print("良好") case "C": print("及格") default: print("不及格") } // 支持多种匹配模式 var value = 5 switch value { case 1, 2, 3: print("1-3之间") case 4...6: // 区间匹配 print("4-6之间") // 这个分支会被执行 default: print("其他值") }

3. for 循环

// 遍历数组 var fruits = ["苹果", "香蕉", "橙子"] for fruit in fruits { print("水果: \(fruit)") } // 遍历字典 var scores = ["张三": 95, "李四": 88] for (name, score) in scores { print("\(name) 得分: \(score)") } // 区间遍历 for i in 1...5 { // 包含5 print(i) // 1, 2, 3, 4, 5 } for i in 1..<5 { // 不包含5 print(i) // 1, 2, 3, 4 }

4. while 循环

var count = 0 while count < 5 { print("计数: \(count)") count += 1 } // repeat-while(先执行后判断) var x = 0 repeat { print("x = \(x)") x += 1 } while x < 3

七、函数

1. 基本函数定义

// 无参数无返回值 func sayHello() { print("你好,Swift!") } // 有参数无返回值 func greet(name: String) { print("你好, \(name)!") } // 有参数有返回值 func add(a: Int, b: Int) -> Int { return a + b } // 调用函数 sayHello() greet(name: "张三") let result = add(a: 3, b: 5)

2. 参数标签

// 自定义参数标签 func multiply(number: Int, by multiplier: Int) -> Int { return number * multiplier } // 调用时使用标签 let product = multiply(number: 4, by: 2) // 忽略参数标签 func subtract(_ a: Int, _ b: Int) -> Int { return a - b } // 调用时不需要标签 let difference = subtract(10, 5)

3. 默认参数值

func welcome(name: String, from city: String = "北京") { print("\(name) 来自 \(city)") } welcome(name: "张三") // 张三 来自 北京 welcome(name: "李四", from: "上海") // 李四 来自 上海

4. 返回多个值(元组)

func minMax(numbers: [Int]) -> (min: Int, max: Int) { var currentMin = numbers[0] var currentMax = numbers[0] for number in numbers[1..<numbers.count] { if number < currentMin { currentMin = number } else if number > currentMax { currentMax = number } } return (currentMin, currentMax) } let values = [3, 5, 1, 9, 4] let result = minMax(numbers: values) print("最小值: \(result.min), 最大值: \(result.max)")

八、枚举 (Enum)

// 基本枚举 enum Direction { case north case south case east case west } var currentDirection = Direction.north currentDirection = .east // 可以省略枚举类型 // 带原始值的枚举 enum Planet: Int { case mercury = 1 case venus = 2 case earth = 3 case mars = 4 } let earth = Planet.earth print(earth.rawValue) // 3 // 带关联值的枚举 enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } var productBarcode = Barcode.upc(8, 85909, 51226, 3) productBarcode = .qrCode("ABCDEFGHIJKLMNOP") switch productBarcode { case .upc(let numberSystem, let manufacturer, let product, let check): print("UPC: \(numberSystem), \(manufacturer), \(product), \(check)") case .qrCode(let productCode): print("二维码: \(productCode)") }

九、类型别名

typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min typealias Point = (x: Int, y: Int) var origin: Point = (x: 0, y: 0)

十、错误处理

// 定义错误类型 enum NetworkError: Error { case notConnected case timeout case serverError } // 抛出错误的函数 func fetchData() throws -> String { throw NetworkError.timeout } // 处理错误 do { let data = try fetchData() print(data) } catch NetworkError.notConnected { print("没有网络连接") } catch NetworkError.timeout { print("请求超时") // 这个分支会被执行 } catch { print("未知错误: \(error)") }

学习建议

  1. 实践为主:Swift Playground 是学习 Swift 的绝佳工具
  2. 从简单开始:先掌握变量、常量、基本类型,再学习高级特性
  3. 理解概念:特别要理解可选类型、类型推断等 Swift 特有概念
  4. 阅读官方文档:Apple 的 Swift 官方文档是最权威的学习资源
  5. 项目驱动:通过小项目来巩固所学知识

Swift 语法设计注重安全性和可读性,虽然初学时可能觉得某些概念(如可选类型)比较复杂,但这些设计能帮助您编写更健壮、更少 bug 的代码。随着学习的深入,您会发现 Swift 是一门既强大又优雅的编程语言。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

http://www.jsqmd.com/news/611501/

相关文章:

  • 双色球数据分析入门:用Python爬取开奖数据并可视化
  • ChatGPT Gemini Claude Grok导出word排版
  • 一种winform实时刷新日志内容的方法昂
  • LumiPixel Canvas Quest实战教学:零基础生成高质量像素人像
  • OpenCode作品集:用AI助手完成的多个开源项目代码展示
  • 比迪丽LoRA模型操作系统兼容性测试:Win10/Win11/Linux部署对比
  • PHP 开源AJAX框架14种
  • 高纯度氮化硅分级设备怎么选?全品类设备推荐及选型关键
  • 数据库的三级模式结构、E-R模型、关系代数、范式理论、SQL体系、事务管理、并发控制、恢复机制、新型数据库架构及查询优化
  • SmolVLA模型提示词(Prompt)工程入门与高级技巧
  • 【Bug】装vs2026后vs2022报各种奇奇怪怪的错
  • 一个简单的神经网络项目
  • RMBG-2.0入门指南:理解‘瞬时咏唱’背后CUDA Graph与TensorRT优化
  • Ollama镜像免配置部署internlm2-chat-1.8b:支持离线环境的纯本地化方案
  • OpenClaw调用Qwen3-14B私有镜像:低成本自动化方案实测
  • PyTorch在RL高性能训练里为什么成了隐形瓶颈?PufferLib 4.0用5000行CUDA C逆袭的900小时直播实战
  • 打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)勇
  • PADS 复用模块的使用
  • Qwen3-ForcedAligner-0.6B在AI艺术创作中的应用:语音驱动动画生成
  • Qwen3.5-9B-AWQ-4bit企业落地案例:银行柜面凭证识别→字段抽取→合规校验闭环
  • C#多线程UI更新踩坑实录:STA线程异常解决全攻略(附WPF/WinForms代码示例)
  • 别再只盯着CWRU了!PHM2012轴承全寿命数据实战:用CNN-LSTM预测剩余寿命的5个关键步骤
  • 电商评论分析神器:SiameseAOE中文-base应用实战
  • 强化学习实战5——BaseLine3使用自定义环境训练【输入状态向量】
  • OpenClaw深度学习监控:Qwen3-32B镜像训练任务可视化
  • RK3568开发板实战:GT9XX触摸屏驱动配置与常见问题排查指南
  • GLM-OCR实战体验:上传图片秒识别,表格公式都能搞定
  • Linux内核与驱动:7.定时器
  • 用于推荐系统的自注意力句子嵌入
  • 汽车牌照数据集 YOLO 目标检测 | 可下载