Swift 中的延遲儲存過程
在本教程中,您將學習有關延遲儲存過程的知識。什麼是 lazy 關鍵字以及如何在 Swift 中使用它?讓我們學習一下。
在 iOS 開發中,處理複雜物件非常常見。但是您需要在真正需要時才使用它們。
在 Swift 中,有一些宣告修飾符可以修改宣告的行為。lazy 修飾符就是一個例子,它用於修改類或結構體儲存變數的含義。
什麼是 Swift 的儲存屬性?
在 Swift 中,儲存屬性是包含類或結構體例項值的屬性。儲存屬性可以是變數或常量。您可以在定義時提供預設值。您也可以在初始化期間修改初始值。
延遲儲存屬性
lazy var 是一種屬性,其初始值在第一次呼叫之前不會計算。它也是屬性的一部分,在其中我們有其他屬性,如常量、計算屬性和可變屬性。
請記住,延遲屬性必須始終宣告為使用 var 關鍵字的變數,而不是常量。這是因為它的初始值可能在例項初始化完成後才被檢索。常量屬性必須在初始化完成之前始終具有值,因此不能宣告為延遲屬性。
什麼是 Swift 中的 lazy var?
用它的名稱來描述什麼是延遲變數會更準確。這意味著初始值在第一次被呼叫或使用之前不會被計算。
換句話說,延遲變數按需初始化。
確實,您只能在類或結構體中使用延遲變數。
讓我們透過一個例子來看一下:
示例
struct Student { var rollNumber: Int var name: String lazy var uniqueId: String = { "ID_\(name)_\(rollNumber)" }() } // Instance creation var amit = Student(rollNumber: 12009, name: "Amit") print(amit.uniqueId)
輸出
ID_Amit_12009
解釋
在上面的示例中,我們建立了一個名為 Student 的結構體,它具有一些儲存屬性和一個延遲屬性。我們定義了一個延遲變數來建立和獲取唯一的 ID。
當您建立此 Student 結構體的例項時,儲存屬性將使用它們的初始值進行初始化。但是,名為 uniqueId 的延遲屬性不會被初始化。所以現在問題是它什麼時候會被初始化?
當透過呼叫延遲屬性來讀取它時,它將被初始化並返回計算出的字串型別值。
延遲變數的結構
延遲變數屬於類或結構體。延遲變數不能在程式碼中的任何地方宣告。
在 var 之前使用 lazy 關鍵字修飾符來使變數變為延遲。
延遲變數必須是計算出來的,而不是直接賦值。
一段程式碼執行計算。
使用花括號宣告程式碼塊。
程式碼塊應該返回值。之後,它被賦給延遲變數。
將程式碼塊分配給延遲變數。
在花括號後新增括號 ()。
延遲 var 和計算屬性的區別
理解延遲儲存屬性和計算屬性之間的區別非常重要。對於初學者來說,有時很難區分它們。
延遲變數是一種儲存屬性,其初始化被延遲。初始值僅計算一次。
計算屬性是一個沒有儲存在任何地方的值。相反,它總是按需計算。
延遲變數的限制
在 Swift 中使用延遲變數時,存在一些限制。
延遲變數的使用僅限於結構體和類。
您不能宣告延遲常量 (lazy let),因為它的值不能更改。
計算屬性不能是延遲變數。這是因為計算屬性在每次被呼叫時都會重新計算。
延遲變數的初始化不是原子操作。因此,延遲變數不是執行緒安全的。
結論
您學習了儲存屬性和延遲儲存屬性。這些在您的程式碼庫中非常有用且重要。深入學習並更多地練習延遲儲存屬性。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP