Swift 关键字

常见的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 关键字)