《從零開始學Swift》學習筆記(Day 29)——訪問級別

原創文章,歡迎轉載。轉載請註明:關東昇的博客  php

訪問級別:java

Swift提供了3種不一樣訪問級別,對應的訪問修飾符爲:publicinternalprivate。這些訪問修飾符能夠修飾類、結構體、枚舉等面向對象的類型,還能夠修飾變量、常量、下標、元組、函數、屬性等內容。微信

  • public。能夠訪問本身模塊中的任何public實體。若是使用import語句引入其餘模塊,咱們能夠訪問其餘模塊中的public實體。框架

  • internal。只能訪問本身模塊的任何internal實體,不能訪問其餘模塊中的internal實體。internal能夠省略,換句話說,默認訪問限定是internal函數

  • private。只能在當前源文件中使用的實體,稱爲私有實體。使用private修飾,能夠用做隱藏某些功能的實現細節。網站

使用訪問修飾符的示例代碼以下:spa

public class PublicClass
{}
internal class InternalClass
{}
private class PrivateClass
{}
 
public var
intPublicVariable = 0
let intInternalConstant =
0  
private func
intPrivateFunction() {}

使用最佳訪問級別:.net

因爲中Swift中訪問限定符可以修飾的實體不少,使用起來比較繁瑣,下面咱們給出一些最佳實踐。設計

1. 統一性原則code

  • 原則1:若是一個類型(類、結構體、枚舉)定義爲internalprivate,那麼類型聲明的變量或常量不能使用public訪問級別。由於public的變量或常量能夠被任何人訪問,而internalprivate的類型不能夠。

  • 原則2:函數的訪問級別不能高於它的參數和返回類型(類、結構體、枚舉)的訪問級別。假設函數聲明爲public級別,而參數或者返回類型聲明爲internalprivate,就會出現函數能夠被任何人訪問,而它的參數和返回類型不能夠訪問的矛盾狀況。

2. 設計原則

若是咱們編寫的是應用程序,應用程序包中的全部Swift文件和其中定義的實體,都是供本應用使用的,而不是提供其餘模塊使用,那麼咱們就不用設置訪問級別了,即便用默認的訪問級別。

若是咱們開發的是框架,框架編譯的文件不能獨立運行,所以它天生就是給別人使用的,這種狀況下咱們要詳細設計其中的Swift文件和實體的訪問級別,讓別人使用的能夠設定爲public,不想讓別人看到的能夠設定爲internalprivate 

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_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索