Swift訪問限定-創(chuàng)新互聯(lián)

        Swift語言可以實現(xiàn)封裝,由于在Swift中類、結構體和枚舉類型都具有面向對象的特性,因此Swift的封裝就變得比較復雜了

成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元臨漳做網(wǎng)站,已為上家服務,為臨漳各地企業(yè)和個人服務,聯(lián)系電話:13518219792

一、訪問范圍

        訪問范圍主要有2個:模塊和源文件

    1、關于模塊

            模塊是指一個應用程序包成一個框架,在Swift中,可以使用import關鍵字引入模塊到自己的工程中

    應用程序包指一個可執(zhí)行的應用程序包,其內部包含了很多swift文件以及其他一些文件,

    框架也是很多switf文件以及其他一些文件的集合,但與應用程序包不同的是,它編譯的結果是不可執(zhí)行程序

2、源文件

        源文件指的是swift種的.swift文件,它編譯之后被包含在應用程序包或框架中,通常一個源文件包含一個面向對象類型(類、結構體和枚舉),在這些函數(shù)中包含函數(shù)、屬性等

二、訪問級別

        Swift提供了3種不同的訪問級別,有這些修飾符:public,private,internal,這些訪問修飾符可以修飾類、結構體、嵌套等面向對象類型,還可以修飾:變量,常量、下標、元組、函數(shù)、屬性等內容

        1、public 可以訪問自己類中的任何public實體,如果使用import引入其他模塊,可以訪問其它模塊的public實體

        2、internal  只能訪問自己模塊的internal實體,不能訪問其他模塊的internal實體,internal可以省略,缺省訪問限定是internal

        3、private 只能在當前源文件中使用的實體,成為私有實體,使用private修飾符,可以用作隱藏某些功能的實現(xiàn)細節(jié)。

三、使用訪問限制最佳實踐

        1、統(tǒng)一性原則

                (1)原則1:如果一個類型(類、結構體和枚舉)定義為internal或private,那么類型聲明的變量或常量不能使用public訪問級別,因為public的變量或常量允許任何人訪問,而private或internal的類型不允許

        private class Employee {                 var no:Int = 0                 var name:String = ""                 var job:String?                 var salary:Double                 var dept:Department? }         internal struct Department {                 var no: Int = 0                 var name:String ="" }     public let emp = Employee() //編譯錯誤     public var dept = Department() //編譯錯誤

    

            (2)原則2:函數(shù)的訪問級別不能高于它的參數(shù)和返回類型的訪問級別,假設函數(shù)聲明為public,而參數(shù)或返回值聲明為internal或private,則會出現(xiàn)函數(shù)可以被任何人訪問,但是它的參數(shù)和返回類型不可以的矛盾情況

        示例:

        class Employee {                 var no:Int = 0                 var name:String = ""                 var job:String?                 var salary:Double                 var dept:Department? }         struct Department {                 var no: Int = 0                 var name:String ="" }         public func getEmpDept(emp:Employee)->Department? {                              return emp.dept         }        上述代碼會發(fā)生編譯錯誤,說明了getEmpDept的函數(shù)的訪問級別高于Employee類型的訪問級別

        2、設計原則

            如果編寫的是應用程序,應用程序包中的所有Swift文件和其中定義的實體,都是給本應用使用的,而不是提供給其他模塊使用,那么就不用設置訪問級別,也就是默認的訪問級別。

            如果開發(fā)的是框架,框架編譯的文件不能獨立運行,因此它是給別人使用的,這種情況下我們就要詳細設計其中的swift文件和實體的訪問級別,其中讓別人使用的設計為public,不想讓別人看到的可以設計為internal或private

        3、元組類型的訪問級別

            元組類型的訪問級別是遵循它元組中的字段最低級的訪問級別,示例如下:

       private class Employee {                 var no:Int = 0                 var name:String = ""                 var job:String?                 var salary:Double                 var dept:Department? }         struct Department {                 var no: Int = 0                 var name:String ="" }         public func getEmpDept(emp:Employee)->Department? {                              return emp.dept         }                  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

            

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章題目:Swift訪問限定-創(chuàng)新互聯(lián)
URL鏈接:http://www.muchs.cn/article46/cdechg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站建設外貿(mào)建站、Google、網(wǎng)站維護、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設