Swift5中的关键字

一、访问控制(open,public,final,private,internal

1、open

        open func 在任何地方都可以访问和重载/重写(override)

        open class 在任何地方都可以访问和继承

2、private

        private func 只有在类内部可以访问 

        private class 只有在类内部可以访问       

3、  public

        private func 在类内部可以访问和重写  ,外部只能访问      

        private class 只有在类内部可以访问和继承,外部只能访问  

4、final

    public final class  类不能被继承

5、internal(默认访问级别,可以不写)

    Internal 在库或者框架内部都可以访问,但是引用库或者框架不能访问

访问权限:open>public>internal>private

二、protocal 协议

    swift中的协议类似其他语言的结构,和OC中的protocal没什么区别,在delegate中经常使用,主要用于数据回调。

     不同是:swift中结构体和枚举可以遵循协议

    常用protocal:UITableViewDelegate等

三、throws

    swift中异常处理定义

        func asURL() throws -> URL

四、guard

    guard是swift2出现的新关键词,guard和if类似,都是判断后面的代码是否为ture,如果是true就向下执行,否则执行else中代码

    使用方法 guard statement else {  }


五、let var

    抛弃了OC中 alloc init的写法,直接调用类名作为实例化方法

    声明不可变量使用 ,变量一旦创建就不能变了

    一般形式:let (变量名):(类型) = (值)

    如果创建时没有指定类型,系统会自动判断

        let a = 1.0 // Double

        leta:Float=1.0// Float

六、数据类型(Int ,Float, Double,String,Optional,匿名类型 )

    Int:整数类型  

    Float, Double:浮点型,Double是64位浮点数,Float是32位,Double精度高,也就是Float的双倍!

    Optional:可选类型

        Optional为了处理值缺失的情况,可以表示”那里有值并且等于x“或者”那里没有值“

        定义:var OptionalInteger: Optional 

        注意:Optionals 为了区分有没有值,但是一定有类型,所以在定义的时候一定要定义类型

        另一种写法: var OptionalInteger: Int?

    Optional本质是个枚举 None 和 Some(T)

   Optional存在的意义

    在OC中经常出现nil:表示无类型指针,数组等不能放入nil,对象变量都可以是nil,nil智能用在对像上,其他地方用其他方式表示缺失值比如NSNotFound

    swift做了一个统一:Optional不是指针,而是一个缺失值,Optional不仅是对象,而是任意类型

    使用:

1、缺失值强制展开

    如果Optional值缺失,直接使用!,会出现运行时错误

2、if语句和强制展开

    如果一个Optional有值,可以使用 OptinalInteger!访问

var myString:String?

myString = "Hello, Swift!"

if myString != nil { // 强制解析 print( myString! )}else{ print("myString 值为 nil")}

3、绑定

如果包含值就赋给临时变量,可以对多个optinal变量进行判断,使用逗号隔开

if let constantName = someOptional { statements}

4、隐式展开(自动解析)

在赋值时候如果有值,可以使用!定义,不需要每次都判断

var myString:String!

主要用在类型初始化的时候

5、可选链

    optional后面加?,如果可选项不为nil则返回值,如果任意环节是nil则返回nil。

    let usecar = person?.owner?.permission?.usecar ?? true        

    匿名类型

        1、AnyObject:一个成员为空的协议,所有的都实现了这个协议,它可以指向任何的类事例,相当于OC中的id。应用:限制协议只能应用于类使用,AnyObject不允许使用结构体和枚举。

        2、Any:空协议集合的别名,表示没有实现任何协议,它可以是任何类、结构、枚举的实例。

        3、AnyClass:AnyObject.Type 的别名(typealias)

七、特殊关键字

    ~= 判断一个值是否在范围内

八、泛型

    在函数定义时不指定类型,用于构建更好重用的函数和类型,标准库就是用泛型构建的,数组和字典类型也是泛型合集

    泛型和Any的区别

        Any会避开类型检查,并且在函数中出参和入参类型可能不一样,在函数定义时候尽量不要用




    



        

你可能感兴趣的:(Swift5中的关键字)