Swift之關鍵字使用(I)

來源:互聯網
上載者:User

標籤:func   class   var   類型   closed   toc   spl   err   地方   

static和class的使用static 使用

在非class的類型(包括enum和struct)中,一般使用static來描述類型範圍。在這個類型中,我們可以在類型範圍中聲明並使用儲存屬性,計算屬性和方法。

 1 //other 2 struct Point {   3     let x: Double   4     let y: Double   5     // 儲存屬性   6     static let zero = Point(x: 0, y: 0)   7     // 計算屬性   8     static var ones: [Point] {   9         return [Point(x: 1, y: 1),  10                 Point(x: -1, y: 1),  11                 Point(x: 1, y: -1),  12                 Point(x: -1, y: -1)]  13     }  14     // 類方法  15     static func add(p1: Point, p2: Point) -> Point {  16         return Point(x: p1.x + p2.x, y: p1.y + p2.y)  17     }  18 } ```19 > 注意: class修飾的類中不能使用class來儲存屬性的
View Code class 使用
1  // other2  class MyClass {3  class var bar: Bar?4  }

但是在使用protocol時,要注意會報一種錯誤,如:"class variables not yet supported"

//other有一個比較特殊的是protocol,在Swift中class、struct和enum都是可以實現protocol的,那麼如果我們想在protocol裡定義一個類型域上的方法或者計算屬性的話,應該用哪個關鍵字呢?答案是使用class進行定義,但是在實現時還是按照上面的規則:在class裡使用class關鍵字,而在struct或enum中仍然使用static——雖然在protocol中定義時使用的是class.
 1 //other 2 protocol MyProtocol { 3     static func foo() -> String 4 } 5 struct MyStruct: MyProtocol { 6     static func foo() -> String { 7         return "MyStruct" 8     } 9 }10 enum MyEnum: MyProtocol {11     static func foo() -> String {12         return "MyEnum"13     }14 }15 class MyClass: MyProtocol {16     class func foo() -> String {17         return "MyClass"18     }19 }
View Code Private、FilePrivate、Public、open

四大屬性的使用範圍圖:

 

private 修飾符
  • 只允許在當前類中調用,不包括 Extension 
  • private 現在變為了真正的私人存取控制 
  • 用 private 修飾的方法不可以被代碼域之外的地方訪問

 

fileprivate 修飾符
  • fileprivate 其實就是過去的 private。 
  • 其修飾的屬性或者方法只能在當前的 Swift 源檔案裡可以訪問。 
  • 即在同一個檔案中,所有的 fileprivate 方法屬性都是可以訪問到的。
 1 class A { 2     fileprivate func test(){ 3         print("this is fileprivate func!") 4     } 5 } 6  7 class B:A { 8     func show(){ 9         test()10     }11 }
public 修飾符
  • 修飾的屬性或者方法可以在其他範圍被訪問  
  • 但不能在重載 override 中被訪問  
  • 也不能在繼承方法中的 Extension 中被訪問

 

open 修飾符

  open 其實就是過去的 public,過去 public 有兩個作用:

  • 修飾的屬性或者方法可以在其他範圍被訪問  
  • 修飾的屬性或者方法可以在其他範圍被繼承或重載 override

 

Swift之關鍵字使用(I)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.