Swift修飾子(final、override、discardableResult、mutating、lazy、inout......)

2049 ワード

final

//5   
class finalClass{  
      
    final var applePen = 1  
    final func test(){  
    }  
    final class func test2(){  
          
    }  
}  
class finalSub: finalClass {  
      
    //    final    
}  

// class ,   
final class unDo{  
     
}

@discardableResult

@discardableResult //     
    class func unUseReuslt(d x:Int) -> Bool {  

mutating

// , ,  mutating  
    mutating func changeby(justA:Int,justB:Int) {  

convenienceコンビニエンスストア

//3        
class Food {  
    var name: String  
    init(name: String) {  
        self.name = name  
    }  
    //   
    convenience init() {  
        self.init(name: "[Unnamed]")  
    }  
  
}

lazy


Swiftリラウド(Object-Cのリラウドは使用時に空間を開く、set getメソッド)Swiftリラウドは静的空間に相当し、一度だけ実行する....a=1を1回だけ印刷
lazy var a:Int = {  
          
        print("a = 1")  
        return 1  
    }()  
var ja:Jason? = Jason(name:"Jason") //Jason    
        var aa = ja?.a  
        var aaa = ja?.a  
        var aa2 = ja?.a 

inoutはC++の参照に相当します

func typeFunc(xx x:inout Int, yy y:inout Int) {  
          
        let value = x  
        x = y  
        y = value  
          
          
    } 

open,public,internal,fileprivate,private


1、private privateアクセスレベルで修飾されたプロパティまたはメソッドは、現在のクラスでのみアクセスできます.
2、fileprivate fileprivateアクセスレベルで修飾された属性またはメソッドは、現在のSwiftソースファイルにアクセスできます.
3、internal(デフォルトのアクセスレベル、internal修飾子は書くか書かないか)internalアクセスレベルで修飾された属性またはメソッドは、ソースコードが存在するモジュール全体にアクセスできます.フレームまたはライブラリコードの場合は、フレーム内全体にアクセスでき、フレームが外部コードで参照されている場合はアクセスできません.Appコードであれば、Appコード全体でもあり、App内部全体でアクセスできます.
4、publicは誰にでもアクセスできます.しかし、他のmoduleではoverrideと継承はできません.moduleではoverrideと継承ができます.
5,openはoverrideと継承を含む誰にでも使用できます.
アクセス順:現在のアクセス権限はopen,public,internal,fileprivate,privateの順です.