Swift基礎知識:17.Swift結構體

在 Swift 中,結構體(Structures)是一種用來封裝一組相關的數據和功能的數據類型。結構體是一種值類型,它在傳遞和賦值時會被復制,與類(Class)不同,類是引用類型,它在傳遞和賦值時是共享同一份數據。

以下是 Swift 中結構體的基本知識點和用法:

1. 定義結構體

使用 struct 關鍵字來定義結構體。例如,定義一個表示二維坐標的結構體:

struct Point {var x: Intvar y: Int
}
2. 屬性和方法

結構體可以包含屬性和方法,用來描述和操作結構體的實例。例如,給上面的 Point 結構體添加一個計算與另一個點的距離的方法:

struct Point {var x: Intvar y: Intfunc distance(to other: Point) -> Double {let deltaX = Double(x - other.x)let deltaY = Double(y - other.y)return (deltaX * deltaX + deltaY * deltaY).squareRoot()}
}
let point1 = Point(x: 1, y: 1)
let point2 = Point(x: 4, y: 5)
print(point1.distance(to: point2))  // 輸出:5.0
3. 可變性

如果需要在方法中修改結構體的屬性,可以在方法前加上 mutating 關鍵字。例如,給 Point 結構體添加一個移動方法:

struct Point {var x: Intvar y: Intmutating func moveBy(x deltaX: Int, y deltaY: Int) {x += deltaXy += deltaY}
}
var point = Point(x: 3, y: 3)
point.moveBy(x: 2, y: 2)
print(point)  // 輸出:Point(x: 5, y: 5)
4. 初始化方法

結構體可以定義初始化方法來設置初始值。例如,給 Point 結構體添加一個帶默認值的初始化方法:

struct Point {var x: Intvar y: Intinit(x: Int = 0, y: Int = 0) {self.x = xself.y = y}
}
let origin = Point()  // 使用默認值初始化
let point = Point(x: 3, y: 3)  // 使用指定值初始化

結構體在 Swift 中被廣泛應用于定義輕量級的數據類型,例如坐標、尺寸、顏色等。結構體的值類型特性使得它們適合用于簡單的數據封裝和傳遞,以及在函數式編程和并發編程中提供更好的安全性。

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

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

相關文章

python專業版破解激活(超詳細)

python專業版破解激活 1.下載pycharm應用程序 這里我使用的版本是pycharm-professional-2023.3.2 下載pycharm程序的連接為: 百度網盤 請輸入提取碼 提取碼為:nym0 2.安裝 選擇安裝路徑 下一步 這里全選 下一步 這里直接點擊安裝就可,其…

Opencv(2)深淺拷貝與基本繪圖(c++python

Opencv(2)深淺拷貝與基本繪圖 文章目錄 Opencv(2)深淺拷貝與基本繪圖三、深淺拷貝四、HSV色域(1).意義(2).cvtColor()(3).inRange()(4).適應光線 三、深淺拷貝 淺拷貝是指當圖像之間進行賦值時,圖像數據并未發生復制,而是兩個對象都指向同一塊內存塊。 …

光伏氣象站:實現自動化、高精度的氣象監測

型號推薦:云境天合 TH-FGF9】光伏氣象站是一種基于光伏技術的氣象監測設備,它利用太陽能轉化為電能,為氣象站提供持續的電力供應,并實現自動化、高精度的氣象監測。 光伏氣象站的工作原理可以分為以下幾個部分: 光伏發…

SpringCloud Nacos安裝

1. Nacos的下載:下載的是1.4的版本。 2. Nacos的安裝: startup.cmd -m standalone 以單機模式啟動Nacos。 登錄的賬號密碼 都是nacos。

Android LruCache源碼分析

文章目錄 Android LruCache源碼分析概述LruCache和LinkedHashMap關系源碼分析屬性寫入數據讀取數據刪除緩存 Android LruCache源碼分析 概述 LruCache(Least Recently Used Cache,最近最少使用緩存)是 Android 中的一種緩存機制。 根據數據…

MySQL 索引原理以及 SQL 優化

索引 索引:一種有序的存儲結構,按照單個或者多個列的值進行排序。索引的目的:提升搜索效率。索引分類: 數據結構 B 樹索引(映射的是磁盤數據)hash 索引(快速鎖定內存數據)全文索引 …

Day13-Linux系統用戶管理知識精講2

Day13-Linux系統用戶管理知識精講2 1. passwd 給用戶設置密碼2. chpasswd 批量設置密碼3. chage 查看和更改密碼屬性 更改用戶密碼過期信息4. 用戶組相關的命令了解 1. passwd 給用戶設置密碼 用戶自己給自己設置密碼直接passwd root用戶給普通用戶設置密碼passwd 用戶名。 …

ChatGPT調教指南 | 咒語指南 | Prompts提示詞教程(一)

在我們開始探索人工智能的世界時,了解如何與之有效沉浸交流是至關重要的。想象一下,你手中有一把鑰匙,可以解鎖與OpenAI的GPT模型溝通的無限可能。這把鑰匙就是——正確的提示詞(prompts)。無論你是AI領域的新手&#…

JS 筆記 --持續更新

this 指向調用 this 是執行上下文中的一個屬性,它指向最后一次調用這個方法的對象。 Function.apply(obj,args)方法能接收兩個參數 obj:這個對象將代替Function類里this對象 args:這個是數組,它將作為參數傳給Function&#xff08…

SpringCloud全家桶---常用微服務組件(1)

注冊中心: *作用: 服務管理 Eureka(不推薦)[讀音: 優瑞卡] Nacos(推薦) Zookeeper [讀音: 如k波] Consul [讀音:康壽] **注冊中心的核心功能原理(nacos)** 服務注冊: 當服務啟動時,會通過rest接口請求的方式向Nacos注冊自己的服務 服務心跳: NacosClient 會維護一個定時心跳持…

Sora背后的論文(1):使用 lstms 對視頻展現進行無監督學習

之前那篇《Sora背后的32篇論文》發出后,大家都覺得不錯,有很多小伙伴都開始啃論文了。 那么我就趁熱打鐵,把這32篇論文的通俗解讀版貼一下。 從去年開始,我基本上形成了一個思維方式,任何事情做之前先看看 有沒有好的…

個人博客系列-環境配置-gitee(2)

注冊gitee賬戶 地址:https://gitee.com/ 此步驟省略 新建倉庫 執行以下命令 即可 拉取代碼 創建目錄 mkdir myCode && cd myCode 登錄gitee找到項目,點擊克隆,拉取代碼 連接遠程倉庫命令 git remote add origin 倉庫地址http…

MariaDB落幕和思考

聽過MySQL的基本也都知道 MariaDB。MariaDB由MySQL的創始人主導開發,他早前曾以10億美元的價格,將自己創建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購,MySQL的所有權也落入Oracle的手中。傳聞MySQL的創始人擔心…

創建型設計模式 - 原型設計模式 - JAVA

原型設計模式 一 .簡介二. 案例三. 補充知識 前言 這是我在這個網站整理的筆記,有錯誤的地方請指出,關注我,接下來還會持續更新。 作者:神的孩子都在歌唱 一 .簡介 原型模式提供了一種機制,可以將原始對象復制到新對象&#xff0…

[TCP] TCP/IP 基礎知識詞典(2)

我想統計一下,TCP/IP 尤其是TCP協議,能搜到的常見的問題,整理起來,關鍵詞添加在目錄中,便于以后查閱。 目前預計整理共3篇: [TCP] TCP/IP 基礎知識問答 :基礎知識 [TCP] TCP/IP 基礎知識問答&…

游戲平臺如何定制開發?

隨著科技的飛速發展和互聯網的普及,游戲平臺已成為人們休閑娛樂的重要選擇。為了滿足用戶多樣化的需求,游戲平臺的定制開發顯得尤為重要。本文將探討游戲平臺定制開發的過程、關鍵要素以及注意事項,為有志于涉足此領域的開發者提供參考。 一、…

python opencv繪制圖像輪廓

目錄 一:查找繪制輪廓 二:計算圖像的矩特征 三:計算Hu矩

ApexRBp在線粒子傳感器在電動汽車電池制造的應用

電動汽車電池的崛起與顆粒污染的挑戰 隨著電動汽車(EV)市場的迅速擴張,對高性能鋰離子電池的需求也急劇增加。這些電池不僅是EV的心臟,更是推動其前行的核心動力。然而,在電池制造的每一個環節,都需要對多…

【Python筆記-設計模式】適配器模式

一、說明 適配器模式是一種結構型模式,它使接口不兼容的對象能夠相互合作 (一) 解決問題 主要解決接口不兼容問題 (二) 使用場景 當系統需要使用現有的類,但類的接口不符合需求時當需要一個統一的輸出接口,但輸入類型不可預知時當需要創…

查詢數據庫的編碼集Oracle,MySQL

1、查詢數據庫的編碼集Oracle,MySQL 1.1、oracle select * from v$nls_parameters where parameterNLS_CHARACTERSET; 查詢版本:SELECT * FROM v$version 2、MySQL編碼集 SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SC…