swift-08-屬性、匯編分析inout本質

一、Swift中跟實例相關的屬性可以分為2大類

1.1 存儲屬性( Stored Property)

?類似于成員變量這個概念
?存儲在實例的內存中
?結構體、類可以定義存儲屬性
?枚舉不可以定義存儲屬性(因為枚舉只存儲關聯值和case)

1.2 計算屬性( Computed Property)


?本質就是方法(函數)
?不占用實例的內存
?枚舉、結構體、類都可以定義計算屬性

print(MemoryLayout<Circle>.stride) // 8

struct Circle {
// 存儲屬性
var radius: Double
// 計算屬性
var diameter: Double {
set {
radius = newValue / 2
}
get {
radius * 2}}
}var circle = Circle(radius: 5)
print(circle.radius) // 5.0
print(circle.diameter) // 10.0circle.diameter = 12
print(circle.radius) // 6.0
print(circle.diameter) // 12.0

二、存儲屬性

?關于存儲屬性,Swift有個明確的規定
在創建類 或 結構體的實例時,必須為所有的存儲屬性設置一個合適的初始值
?可以在初始化器里為存儲屬性設置一個初始值
?可以分配一個默認的屬性值作為屬性定義的一部分

三、計算屬性?

如果這個屬性可以通過寧一個屬性計算出來就設計為計算屬性

有set 必須有get?

四、枚舉rawValue原理

枚舉原始值rawValue的本質是:只讀計算屬性

enum TestEnum : Int {
case test1 = 1, test2 = 2, test3 = 3
var rawValue: Int {
switch self {
case .test1:
return 10
case .test2:
return 11
case .test3:
return 12
}
}
}

print(TestEnum.test3.rawValue) // 12

五、延遲存儲屬性(?Lazy?Stored?Property


?

class PhotoView {
lazy var image: Image = {
let url = "https://www.520it.com/xx.png"
let data = Data(url: url)
return Image(data: data)
}() 調用閉包
}

六、延遲存儲屬性注意點

七、屬性觀察器(Property Observer )

八、全局變量、局部變量

?九、inout的再次詳細研究 1.22 輸入輸出參數本質就是引用傳遞

十、類型屬性( Type Property)

十一、類型屬性細節?

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

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

相關文章

【HarmonyOS Next之旅】DevEco Studio使用指南(十二)

目錄 1 -> Code Linter代碼檢查 2 -> 配置代碼檢查規則 3 -> 查看/處理代碼檢查結果 1 -> Code Linter代碼檢查 Code Linter針對ArkTS/TS代碼進行最佳實踐/編程規范方面的檢查。 可根據掃描結果中告警提示手工修復代碼缺陷&#xff0c;或者執行一鍵式自動修復…

前端vue項目打包成桌面端exe應用

主要 使用 Electron將 vue項目打包為 exe 1.首先下載Electron git clone https://github.com/electron/electron-quick-start cd electron-quick-start npm install安裝完依賴之后 npm start運行成功 注意&#xff1a;如果你的項目使用了VueRouter&#xff0c;那么切記&…

基于springcloud的“微服務架構的巡游出租管理平臺”的設計與實現(源碼+數據庫+文檔+PPT)

基于springcloud的“微服務架構的巡游出租管理平臺”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;springcloud 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體結構圖 E-R實體關系圖…

新一代達夢官方管理工具SQLark:可視化建表操作指南

在數據庫管理工作中&#xff0c;新建表是一項基礎且頻繁的操作。SQLark 的可視化建表功能為我們提供了一種高效、便捷且絲滑流暢的建表新體驗。一起來了解下吧。 SQLark 官方下載鏈接&#xff1a;www.sqlark.com 新建表作為常見的功能&#xff0c;相比其他管理工具&#xff0c;…

Scala相關知識學習總結6

1、集合計算高級函數說明 - 過濾&#xff1a;遍歷集合&#xff0c;提取滿足特定條件的元素組成新集合。 - 轉化/映射&#xff08;map&#xff09;&#xff1a;將集合里的每個元素應用到指定函數進行轉換。 - 扁平化&#xff1a;文檔未詳細闡述其具體含義和操作。 - 扁平化映射&…

pandas.DataFrame.dtypes--查看和驗證 DataFrame 列的數據類型!

查看每列的數據類型&#xff0c;方便分析是否需要數據類型轉換 property DataFrame.dtypes[source] Return the dtypes in the DataFrame. This returns a Series with the data type of each column. The result’s index is the original DataFrame’s columns. Columns with…

計算機中的單位

在計算機科學中&#xff0c;單位用于衡量數據存儲、內存、數據傳輸速率等。以下是一些常見的計算機單位及其含義&#xff1a; ### **1. 數據存儲單位** 數據存儲單位用于衡量計算機存儲設備&#xff08;如硬盤、內存、閃存等&#xff09;的容量。 | 單位 | 符號 | 含義…

Spring Boot 自定義配置類(包含字符串、數字、布爾、小數、集合、映射、嵌套對象)實現步驟及示例

Spring Boot 自定義配置類實現步驟及示例 步驟說明 創建配置類&#xff1a;定義一個 POJO 類&#xff0c;使用 ConfigurationProperties 注解指定配置前綴。啟用配置綁定&#xff1a;在啟動類或配置類上添加 EnableConfigurationProperties 注解。配置文件寫法&#xff1a;在 …

Linux: 線程控制

目錄 一 前言 二 線程控制 1. POSIX線程庫(原生線程庫) 2. 創建線程 2.1 pthread_create 2.2pthread_self()獲取線程id 3.線程終止 3.1.return 方式 3.2 pthread_exit 4 線程等待 三 理解線程tid 一 前言 在上一篇文章中我們已經學習了線程的概念&#xff0c;線程的創…

避開養生誤區,擁抱健康生活

在追求健康的道路上&#xff0c;我們常常會陷入一些養生誤區&#xff0c;不僅無法達到預期效果&#xff0c;還可能損害身體健康。只有撥云見日&#xff0c;認清這些誤區&#xff0c;采取正確的養生方式&#xff0c;才能真正擁抱健康生活。? 很多人認為&#xff0c;保健品吃得…

<數據集>蘋果識別數據集<目標檢測>

數據集下載鏈接https://download.csdn.net/download/qq_53332949/90585216數據集格式&#xff1a;VOCYOLO格式 圖片數量&#xff1a;535張 標注數量(xml文件個數)&#xff1a;535 標注數量(txt文件個數)&#xff1a;535 標注類別數&#xff1a;2 標注類別名稱&#xff1a;…

【補題】P10424 [藍橋杯 2024 省 B] 好數(數位dp)

題意&#xff1a; 一個整數如果按從低位到高位的順序&#xff0c;奇數位&#xff08;個位、百位、萬位……&#xff09;上的數字是奇數&#xff0c;偶數位&#xff08;十位、千位、十萬位……&#xff09;上的數字是偶數&#xff0c;我們就稱之為“好數”。 給定一個正整數 N…

分布式存儲怎樣提高服務器數據的安全性?

分布式存儲是一種計算機數據存儲架構&#xff0c;主要是將數據信息分布存儲在多臺計算機或者是服務器上&#xff0c;以此來實現高可靠性、可擴展性和高性能&#xff0c;讓每個計算機或服務器可以通過網絡連接相互通信和協作。 分布式存儲系統會定期對重要的數據信息進行完整性檢…

數字IC后端培訓教程系列之PR Innovus工具寫出Calibre LVS用的Netlist詳細步驟

在數字IC后端設計實現chipfinish階段需要寫出很多數據&#xff0c;比如netlist&#xff0c;def&#xff0c;gds&#xff0c;lib和lef等文件。 今天給大家分享PR工具Innovus寫出Calibre物理驗證LVS要用的netlist的詳細步驟。 手把手教你debug解決物理驗證Calibre LVS錯誤 1&a…

TrueNAS scale(23.10) Restful API接口調用

背景 本文主要講解開源的NAS系統--TrueNAS的二次開發。 TrueNAS scale安裝 網上能找到很多類似的文章&#xff0c;本文就不介紹了&#xff0c;這里給一個視頻博主的傳送門&#xff1a; 司波圖 TrueNAS scale Resful API 接口 官網的 Resful API地址&#xff1a;TrueNAS REST…

卡爾曼濾波器淺聊

0 前言: 卡爾曼濾波屬于算法領域的,所以一些基本的數學概念是必須了解的 涉及到的數學基本概念 概念數學符號含義數學期望(Expected Value)E描述隨機變量平均取值的最核心概念概率(Probability)P(X= x i x_i xi?)隨機變量 X 取特定值 x i x_i xi?的概率方差(Varian…

1ll C++

在C++中,1ll 表示 long long 類型的整數常量1。這里的 ll 是 long long 的縮寫。這種寫法主要用于以下幾個方面: 1. 為什么需要 1ll? 在您的代碼中,1ll 主要用于 防止整數溢出 和 確保正確的類型轉換: cpp 復制 p = 1ll * p * i % MOD; f[i + 1] = 1ll * i * (i + 1) …

oracle 12c密碼長度,復雜度查看與設置

一 密碼長度和復雜度 Oracle 數據庫通過 PASSWORD_VERIFY_FUNCTION 來控制密碼復雜度。 1.1 查看當前的密碼復雜度設置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配給該 PROFILE 的密碼驗證函數名稱。如果為 NULL&#xff0c;…

指定運行級別

linux系統下有7種運行級別,我們需要來了解一下常用的運行級別,方便我們熟悉以后的部署環境,話不多說,來看. 開機流程&#xff1a; 指定數級別 基本介紹 運行級別說明: 0:關機 相當于shutdown -h now ??默認參數不能設置為0,否則系統無法正常啟動 1:單用戶(用于找回丟…

Appium工作原理及環境的搭建(1)

1、Appium的介紹&#xff1a; 一、什么是Appium Desktop&#xff1f; Appium Desktop是Appium項目的桌面版GUI工具&#xff0c;提供了一個友好的界面&#xff0c;用于啟動Appium服務器、查看設備日志、與設備交互、調試自動化腳本等。相比于命令行工具&#xff0c;Appium Des…