当前位置: 首页 > 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.cnnetsun.cn/news/1775589.html

相关文章:

  • PHP 开源AJAX框架14种
  • 江苏事业单位面试培训深度测评:授课方式科学性——线下、线上、混合三种模式的底层逻辑
  • 理解 SAP ABAP CDS 数据定义中的自动别名:数据库表字段插入后的命名规则与开发实践
  • 学术党福音!OpenClaw+Qwen3-4B自动整理文献引用
  • 小鸡毛的具身智能VLA入门自学路线
  • 新手友好:MedGemma 1.5快速部署与基础健康咨询全攻略
  • 从物理到艺术:Photoshop混合模式的数学原理与视觉化解析
  • Nanbeige 4.1-3B WebUI应用:打造你的个人二次元AI助手
  • 纯电动汽车再生制动策略:Cruise与Simulink联合仿真的整车与策略模型解析文档
  • Linux 的 mv 命令
  • 银行卡基本信息查询API集成指南
  • 从FP32到INT8:在RK3588开发板上实测RKNN量化对YOLOv5推理速度与精度的真实影响
  • FlowState Lab 与经典统计模型(ARIMA, Prophet)的横向对比评测
  • GLM-4-9B-Chat-1M效果惊艳:长篇小说逻辑梳理+代码库跨文件调试实录
  • LangChain4j 会话记忆存数据库?手把手教你自定义 ChatMemoryStore 接口实现
  • 【ESP32_IDF】利用LVGL实现高效GIF动画播放的实战指南
  • AWPortrait-Z WebUI二次开发解析:科哥定制界面布局与交互逻辑
  • Realistic Vision V5.1与STM32F103C8T6:嵌入式设备图像生成交互原型
  • Chandra OCR应用案例:数学试卷/表单/PDF批量转结构化文本
  • 在Ubuntu 22.04上搞定CanFestival主站:从源码下载到编译验证的保姆级教程
  • 深入FreeRTOS SMP调度器:主核与从核如何“默契配合”完成第一次任务切换?
  • Alpamayo-R1-10B高算力适配:PyTorch 2.8+bf16混合精度部署优化
  • Qwen3-14B-Int4-AWQ效果集锦:从技术文档到创意写作的多风格文本生成
  • 快速入门:Ollama部署Yi-Coder-1.5B,5分钟搭建编程助手
  • 【数据结构与算法】第34篇:选择排序:简单选择排序与堆排序
  • 谷歌更新Gemini心理健康安全防护措施
  • 人脸识别OOD模型真实效果:会议直播截图中关键人物人脸的OOD分标注集
  • 【网络层-ICMP互联网控制报文协议】
  • Hunyuan-MT Pro实际应用:跨国远程医疗问诊记录多语种结构化摘要生成
  • 基于PySide6的YOLO通用检测平台:从零搭建与多场景适配