Swift 关键字

作者: Mr__Peng__ | 来源:发表于2018-12-05 15:51 被阅读37次

    常见的Swift关键字

    • let - 定义常量,不可变,如果对let定义的常量重新赋值会报错,并提供Fix-it,变换为var

    • var - 定义变量,可变,没有值更新会提示变换为let

    • func - 函数方法标识 例如

    func setName(name: String) {
            self.userName = name
    }
    
    • class - 定义一个类 例如
    class Person:NSObject {
        var name:String
        init(name : String) {
            self.name = name
        }
    }// 定义一个继承与NSObject 的Person 类
    
    • protocol 定义协议
    protocol ExampleProtocol {
         var simpleDescription: String { get }
         mutating func adjust()
    }
    
    • throws 抛出异常
    enum PrinterError: Error {
    case outOfPaper
    case noToner
    case onFire
    }
    
    func send(job: Int, toPrinter printerName: String) throws -> String {
    if printerName == "Never Has Toner" {
        throw PrinterError.noToner
    }
    return "Job sent"
    }
    
    • inout - 将函数的参数以引用类型传递
    let origin = 1
    func setOrigin(int : inout Int) {
        int = 200   // 改变int 地址 指向的值
     }
    setOrigin(int:&origin)
    print(origin) // 此时origin = 200 ,
    
    
    • class,func 修饰关键字
    1. class
    类型 文件内 模块内 其他模块
    open 可访问和继承 可访问和继承 可访问和继承
    public 可访问和继承 可访问和继承 可访问,不可继承
    internal 可访问和继承 可访问和继承 不可访问和继承
    fileprivate 可访问和继承 不可访问和继承 不可访问和继承
    private 可访问和继承 不可访问和继承 不可访问和继承
    1. func
    类型 文件内 模块内 其他模块
    open 可访问和重载 可访问和重载 可访问和重载
    public 可访问和重载 可访问和重载 可访问,不可重载
    internal 可访问和重载 可访问和重载 不可访问和重载
    fileprivate 可访问和重载 不可访问和重载 不可访问和重载
    private 可访问和重载 不可访问和重载 不可访问和重载

    final修饰的func 在任何地方都不能被重载,class默认使用internal

    • typealias - 指定将某个特定的类型通过typealias赋值为新名字,typealias不能将整个泛型类型进行重命名,在别名中引入泛型,也可以进行对应
    typealias ii = Int
    
    • associatetype - 定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定。通过 associatedtype 关键字来指定关联类型。比如使用协议声明更新cell的方法:
    //模型
    struct Model {
        let age: Int
    }
     
    //协议,使用关联类型
    protocol TableViewCell {
        associatedtype T
        func updateCell(_ data: T)
    }
    
    //遵守TableViewCell
    class MyTableViewCell: UITableViewCell, TableViewCell {
        typealias T = Model
        func updateCell(_ data: Model) {
            // do something ...
        }
    }
    
    • lazy - 懒加载,需要的时候才加载
    lazy var type = 1
    
    lazy var person : Person = {
        let p = Person()
        return p
    }()
    
    • defer - 在当前声明的作用域最后执行
    • @noescape - 非逃逸闭包,闭包在函数执行完后才被调用,已被弃用
    • @esacping - 逃逸闭包,调用的地方超过了函数范围
    • return - 不解释

    相关文章

      网友评论

        本文标题:Swift 关键字

        本文链接:https://www.haomeiwen.com/subject/nvcmcqtx.html