10分鐘掌握swift

整理一個?10分鐘掌握 Swift 的精華指南,用一個?Demo?串聯 Swift 的核心語法、數據結構、函數、類/結構體和閉包,讓你快速入門。


1?? 基礎語法與變量

import Foundation  // 引入基礎庫// 變量和常量
var name: String = "Alice"    // 可變
let age: Int = 25             // 不可變// 類型推斷
var height = 1.68             // 自動推斷為 Doubleprint("Name: \(name), Age: \(age), Height: \(height)")

? Swift 核心點:

  • var?可變,let?不可變

  • 支持類型推斷

  • 字符串插值?\(變量)


2?? 控制流

// 條件語句
if age >= 18 {print("\(name) is adult")
} else {print("\(name) is minor")
}// 循環
for i in 1...5 {       // 閉區間print("i = \(i)")
}var j = 0
while j < 3 {print("j = \(j)")j += 1
}

? 核心:

  • if-elsefor-inwhile

  • 1...5?表示閉區間(包含 1 和 5),1..<5?表示左閉右開


3?? 函數與閉包

// 函數
func add(_ a: Int, _ b: Int) -> Int {return a + b
}print("10 + 20 = \(add(10, 20))")// 閉包(匿名函數)
let multiply: (Int, Int) -> Int = { (x, y) inreturn x * y
}
print("3 * 4 = \(multiply(3, 4))")

? 核心:

  • func?定義函數

  • _?表示調用時省略參數名

  • 閉包是 Swift 的函數式編程核心


4?? 數組與字典

// 數組
var numbers = [3, 1, 4, 1, 5]
numbers.append(9)
numbers.sort()
print("Numbers: \(numbers)")// 字典
var scores = ["Alice": 95, "Bob": 88]
scores["Charlie"] = 90
for (name, score) in scores {print("\(name): \(score)")
}

? 核心:

  • Swift 有強類型數組?[Type]?和字典?[Key: Value]

  • for-in?可遍歷數組和字典


5?? 結構體與類

// 結構體
struct Point {var x: Intvar y: Intfunc printPoint() {print("(\(x), \(y))")}
}// 類
class Person {var name: Stringvar age: Intinit(name: String, age: Int) {self.name = nameself.age = age}func greet() {print("Hello, I'm \(name), \(age) years old")}
}let p1 = Point(x: 1, y: 2)
p1.printPoint()let person = Person(name: "Alice", age: 25)
person.greet()

? 核心:

  • struct?默認值類型,class?是引用類型

  • init?構造函數

  • 方法直接寫在結構體或類中


6?? 可選類型(Optional)

var optionalName: String? = "Bob"
print(optionalName ?? "No name")   // nil 合并運算符if let realName = optionalName {print("Name exists: \(realName)")
} else {print("Name is nil")
}

? 核心:

  • ??表示可能為空

  • if let?安全解包


7?? 高階用法:map / filter / reduce

let nums = [1, 2, 3, 4, 5]
let squared = nums.map { $0 * $0 }       // [1,4,9,16,25]
let even = nums.filter { $0 % 2 == 0 }   // [2,4]
let sum = nums.reduce(0) { $0 + $1 }     // 15print(squared, even, sum)

? 核心:

  • Swift 內置高階函數,方便函數式編程


8?? 總結 Swift 核心點

功能Swift 表達
變量/常量var?/?let
類型推斷var x = 10
條件/循環if,?for-in,?while
函數func add(a,b) -> Int
閉包{ (x,y) in x*y }
數組/字典[Type]?/?[Key: Value]
類/結構體class?/?struct
可選類型??/?if let
高階函數map,?filter,?reduce

我們仔細拆解這行 Swift 代碼,其他都很簡單,不再贅述:

let sum = nums.reduce(0) { $0 + $1 }

nums.reduce(0)?是什么?

  • nums?是一個數組,例如:

let nums = [1, 2, 3, 4, 5]
  • reduce?是?高階函數,作用是?把數組里的元素“累積”成一個值

  • 0?是?初始值,表示累加的起點。

  • { $0 + $1 }?是一個閉包(匿名函數),用于定義?如何累加每個元素


閉包?{ $0 + $1 }?含義

  • $0?表示當前累積值(初始值開始是 0)

  • $1?表示數組當前遍歷的元素

  • { $0 + $1 }?就是把累積值加上當前元素,并返回新的累積值。


執行過程(以?[1,2,3,4,5]?為例)

步驟累積值?$0當前元素?$1計算?$0+$1新累積值
初始010 + 11
2121 + 23
3333 + 36
4646 + 410
510510 + 515

最終,reduce?返回?15,賦值給?sum


總結

  • reduce(initial) { closure }?可以把數組元素“折疊”為一個值。

  • $0?= 累積值,$1?= 當前元素。

  • 上面這行代碼等價于傳統循環:

var sum = 0
for n in nums {sum += n
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95951.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【完整源碼+數據集+部署教程】食品分類與實例分割系統源碼和數據集:改進yolo11-AggregatedAttention

背景意義 研究背景與意義 隨著全球食品產業的快速發展&#xff0c;食品安全和質量控制日益成為社會關注的焦點。食品分類與實例分割技術的應用&#xff0c;能夠有效提升食品識別的準確性和效率&#xff0c;為食品監管、營養分析以及智能餐飲等領域提供重要支持。傳統的食品識別…

C# 中的N+1問題

目錄 含義 影響 避免方法 1. 立即加載&#xff08;Eager Loading&#xff09; 2. 顯式加載&#xff08;Explicit Loading&#xff09; 3. 投影&#xff08;Projection&#xff09; 4. 批處理查詢 5. 禁用延遲加載 含義 N1 問題 是 ORM&#xff08;對象關系映射&#x…

國內多光譜相機做得好的廠家有哪些?-多光譜相機品牌廠家

多光譜相機是一種能夠同時捕捉多個特定波段的光譜信息&#xff0c;這些波段覆蓋可見光、近紅外以及短波紅外等區域。廣泛應用于遙感、農業、環境監測、工業檢測、安防等領域。近年來&#xff0c;我國在多光譜技術領域取得了顯著進步&#xff0c;涌現出一批技術實力強、產品性能…

如何用外部電腦訪問本地網頁?

之前本來說用內網穿透工具來查看完成這個工具&#xff0c;結果感覺各種不符合心意&#xff0c;突然發現有更簡單的方法。如果想讓兩臺電腦在 同一局域網 內都能訪問運行在 http://localhost:5174/ 上的項目&#xff0c;而不需要使用內網穿透工具&#xff0c;可以通過以下方法實…

PromptPilot — AI 自動化任務的下一個環節

作者:陳大魚頭 github:https://github.com/KRISACHAN 郵箱:chenjinwen77@gmail.com PromptPilot 體驗地址:https://promptpilot.volcengine.com/ 前言 如果大家有關注 AI 相關新聞的話,一定會知道在 2025 年 6 月 11 日火山引擎 FORCE 原動力大會上,豆包大模型 1.6 系列…

[Responsive theme color] 動態更新 | CSS變量+JS操控 | 移動端-漢堡菜單 | 實現平滑滾動

第3章&#xff1a;CSS變量操控 歡迎回來&#x1f43b;??? 通過前兩章&#xff0c;我們掌握了 動態主題定制 的交互邏輯&#xff0c;以及 色彩工具函數 如何實現色值格式轉換。 本章將揭示技術拼圖的最后一塊&#xff1a;CSS變量動態操控&#xff0c;解析JavaScript如何實…

數學建模 15 邏輯回歸與隨機森林

邏輯回歸&#xff08;用于分類&#xff09;用途&#xff1a;通過已有數據&#xff0c;計算出線性方程的參數w后&#xff0c;可以用于預測某一個物品屬于某一類的概率&#xff0c;[0,1];求解思想&#xff1a;邏輯回歸通過最大似然估計&#xff08;Maximum Likelihood Estimation…

衡石使用指南嵌入式場景實踐之儀表盤嵌入

應用展示交互 應用集市展示應用時會與儀表盤、圖表進行交互操作&#xff0c;主要包括去分析、保存當前過濾快照、字段設置、刷新、全屏、嵌入、導出等功能。 保存當前過濾快照 儀表盤展示數據時往往使用過濾器來查看不同場景下的分析數據。用戶從一種場景切換到另一種場景&a…

Qt | 四種方式實現多線程導出數據功能

前言 在以往的項目開發中&#xff0c;在很多地方用到了多線程。針對不同的業務邏輯&#xff0c;需要使用不同的多線程實現方法&#xff0c;來達到優化項目的目的。本文記錄下在Qt開發中用到的多線程技術實現方法&#xff0c;以導出指定范圍的數字到txt文件為例&#xff0c;展示…

運放的學習筆記以及一些用法的個人看法

負反饋形成了虛短。 你的輸出會對-極產生一個向上的電壓&#xff0c;當你的-的時候就兩邊相等了&#xff0c;這個時候就輸出就不變了&#xff0c;也就是負反饋調節&#xff0c;調節了左邊的電壓差 如果你的右邊輸出已經達到了12v或者0v這個時候你就飽和了&#xff0c;這個時候…

MySQL的三大范式:

目錄 鍵和相關屬性的概念&#xff1a; 第一范式&#xff1a; 第二范式&#xff1a; 第三范式&#xff1a; 總結&#xff1a; 反范式化&#xff1a; 在關系型數據庫中&#xff0c;關于數據表設計的基本原則&#xff0c;規則就稱為范式。 范式是關系數據庫理論的基礎&…

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘imageio’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘imageio’問題 摘要 在Python開發過程中&#xff0c;尤其是使用PyCharm等IDE時&#xff0c;遇到pip install報錯是一個常見的問題&#xff0c;尤其是在執行安裝…

2025年高效能工程項目管理軟件推薦榜單:AI重構工程進度可視化與資源動態調度體系

在工程行業數字化深度變革的2025年,項目管理正面臨前所未有的挑戰與機遇。權威數據顯示,68%的工程項目因進度追蹤滯后導致交付延期,超半數企業因數據孤島陷入跨部門協同效率低下的困境,而資源錯配造成的隱性成本損失高達年度預算的15%。隨著AI決策引擎、BIM全流程融合、IoT物聯…

豆包 Java的23種設計模式

Java的23種設計模式是軟件開發中常用的設計思想總結&#xff0c;根據用途可分為三大類&#xff1a;創建型、結構型和行為型。 一、創建型模式&#xff08;5種&#xff09; 用于處理對象創建機制&#xff0c;隱藏創建邏輯&#xff0c;使程序更靈活。 單例模式&#xff1a;保證一…

Redis7學習--詳解哨兵,文件配置、主客觀下線

目錄 一、前言 二、哨兵 1、是什么&#xff1f; 2、哨兵的功能 3、案例演示 Redis Sentinel 架構 配置說明 哨兵配置文件 主從配置文件 主節點宕機后各節點狀態 主從切換后配置文件的自動調整 4、哨兵運行流程和選舉原理 SDOWN主觀下線 ODOWN客觀下線 選出新的主節…

Android 項目:畫圖白板APP開發(二)——歷史點、數學方式推導點

上一章我們講解了如何繪制順滑、優美的曲線&#xff0c;為本項目的繪圖功能打下了基礎。本章我們將深入探討兩個關鍵功能的實現&#xff1a;歷史點和數學方式推導點。這些功能將大幅提升我們白板應用的專業性和用戶體驗。一、History點之前在onTouchEvent中獲取的MotionEvent&a…

25. for 循環區別

1. 基本 for 循環 for (let i 0; i < 10; i) {console.log(i); }特點&#xff1a; 適用于已知循環次數的情況使用數字索引進行迭代可以精確控制循環過程性能最好&#xff0c;開銷最小 2. for…in 循環 // 數組示例 for (let i in [1, 2, 3]) {console.log(i, typeof i); //…

Trae 輔助下的 uni-app 跨端小程序工程化開發實踐分享

大家好&#xff0c;我是不如摸魚去&#xff0c;歡迎來到我的AI編程分享專欄。 這次來分享一下&#xff0c;我使用 Trae 作為主要AI編程工具&#xff0c;開發 uni-app 跨平臺小程序的完整實踐經驗。我在實際的開發過程中&#xff0c;探索了 Trae 輔助開發的具體應用場景和效果&…

Vue3 + Element Plus 人員列表搜索功能實現

設計思路使用Element Plus的el-table組件展示人員數據 在姓名表頭添加搜索圖標按鈕 點擊按鈕彈出搜索對話框 在對話框中輸入姓名進行搜索 實現搜索功能并高亮匹配項下面是完整的實現代碼&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><…

告別手動優化!React Compiler 自動記憶化技術深度解析

概述 React Compiler 是 React 團隊開發的一個全新編譯器&#xff0c;目前處于 RC&#xff08;Release Candidate&#xff09;階段。這是一個僅在構建時使用的工具&#xff0c;可以自動優化 React 應用程序&#xff0c;無需重寫任何代碼即可使用。 核心特性 自動記憶化優化 …