《從零開始學Swift》學習筆記(Day 29)——訪問級別
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
訪問級別:
Swift提供了3種不同訪問級別,對應的訪問修飾符為:public、internal和private。這些訪問修飾符可以修飾類、結構體、列舉等物件導向的型別,還可以修飾變數、常量、下標、元組、函式、屬性等內容。
- public。可以訪問自己模組中的任何public實體。如果使用import語句引入其他模組,我們可以訪問其他模組中的public實體。
- internal。只能訪問自己模組的任何internal實體,不能訪問其他模組中的internal實體。internal可以省略,換句話說,預設訪問限定是internal。
private。只能在當前原始檔中使用的實體,稱為私有實體。使用private修飾,可以用作隱藏某些功能的實現細節。
使用訪問修飾符的示例程式碼如下:public class PublicClass {} internal class InternalClass {} private class PrivateClass {} public var intPublicVariable = 0 let intInternalConstant = 0 private func intPrivateFunction() {}
使用最佳訪問級別:
由於中Swift中訪問限定符能夠修飾的實體很多,使用起來比較繁瑣,下面我們給出一些最佳實踐。
1、統一性原則
- 原則1:如果一個型別(類、結構體、列舉)定義為internal或private,那麼型別宣告的變數或常量不能使用public訪問級別。因為public的變數或常量可以被任何人訪問,而internal或private的型別不可以。
原則2:函式的訪問級別不能高於它的引數和返回型別(類、結構體、列舉)的訪問級別。假設函式宣告為public級別,而引數或者返回型別宣告為internal或private,就會出現函式可以被任何人訪問,而它的引數和返回型別不可以訪問的矛盾情況。
2、設計原則
如果我們編寫的是應用程式,應用程式包中的所有Swift檔案和其中定義的實體,都是供本應用使用的,而不是提供其他模組使用,那麼我們就不用設定訪問級別了,即使用預設的訪問級別。
如果我們開發的是框架,框架編譯的檔案不能獨立執行,因此它天生就是給別人使用的,這種情況下我們要詳細設計其中的Swift檔案和實體的訪問級別,讓別人使用的可以設定為public,不想讓別人看到的可以設定為internal或private。3、 元組型別的訪問級別
元組型別的訪問級別遵循元組中欄位最低階的訪問級別,例如下面的程式碼:private class Employee { var no: Int = 0 var name: String = "" var job: String? var salary: Double = 0 var dept: Department? }
struct Department { var no: Int = 0 var name: String = "" }
private let emp = Employee() var dept = Department()
private var student1 = (dept, emp) ①
4、列舉型別的訪問級別
列舉中成員的訪問級別繼承自該列舉,因此我們不能為列舉中的成員指定訪問級別。示例程式碼如下:public enum WeekDays { case Monday case Tuesday case Wednesday case Thursday case Friday }
由於WeekDays列舉型別是public訪問級別,因而它的成員也是public級別。
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- python Scrapy 從零開始學習筆記(一)Python筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- iOS學習筆記49 Swift(九)訪問控制iOS筆記Swift
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 從零開始的JAVAday29~day35Java
- 從零開始學習各種常見未授權訪問漏洞
- 從零開始學習機器學習機器學習
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- 從零開始機器學習機器學習
- 從零開始學五筆(一):概述
- 《Python深度學習從零開始學》簡介Python深度學習
- 從零開始機器學習-03機器學習
- 從零開始機器學習--4機器學習
- 從零開始機器學習--05機器學習
- 從零開始學習 Go ——安裝Go
- 從零開始學習C++(0)C++
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- 從零開始的Unity個人學習日記(二)Unity
- 從零開始學機器學習——瞭解聚類機器學習聚類
- 從零開始學機器學習——入門NLP機器學習
- 《谷歌JAX深度學習從零開始學》簡介谷歌深度學習
- 從零開始學PythonPython
- swift學習筆記《2》-swift語法Swift筆記
- 從頭開始的Java學習Day05Java
- 從零開始學習邏輯迴歸邏輯迴歸
- 從零開始學習如何部署程式碼
- 從零開始內網滲透學習內網
- 從零開始學習 React 高階元件React元件