Swift3.0中的关键字

open > public > internal > fileprivate > private

  1. public表示当前类、属性或者方法只能在当前module内被继承或者 override,在当前module意外只能被访问;
  2. open表示当前类、属性或者方法可以在任何地方被继承或者override;是跨模块可以访问的。
  3. final是一个辅助修饰词,表示当前类、属性或者方法在任何地方都只能被访问,不能被继承或者override;
  4. internal表示默认级别,在本模块(项目、target)中可以访问。

Self 关键字

在Swift2.0, 将Self用于约束泛型,功能类似于OC中的instancetype,示例:extension Ordered where Self: Comparablewhere的作用是限定协议的扩展的有效条件,使用Self来代表协议的遵守者。可以指定遵守者是某个类的子类或者遵守了某个协议。

protocol Coder {

    var haveFun: Bool { get set }
    var ownMoney: Bool { get set }
    
}

protocol Swifter {

    var codingLevel: Int { get set }
    func say()

}
extension Swifter {

    func say() {
        print("I can coding of Swift3.0")
    }
}

extension Coder where Self: Swifter {
    
    func say() {
        print("I can coding of Swift3.0 and Java")
    }
    
}
struct CoderA: Swifter {
    internal var codingLevel: Int = 0


    var name: String
    var haveFun: Bool
    var ownMoney: Bool

}

struct CoderB: Coder,Swifter {
    
    var haveFun: Bool = true
    
    var ownMoney: Bool = true

    
    var codingLevel = 5

    var name: String

}
let codera = CoderA(codingLevel: 5, name: "jjx", haveFun: false, ownMoney: false)
let coderb = CoderB(haveFun: true, ownMoney: true, codingLevel: 50, name: "xxxoo")

coderb.codingLevel
print("++++++++++")
codera.say() //I can coding of Swift3.0

coderb.say() //I can coding of Swift3.0
print("************************************************************")```


### @discardableResult忽略函数的的返回值
func show() -> Int {
    return 5
}

show()///Result of call to 'show()' is unused

        @discardableResult
        func show() -> Int {
            return 5
        }
        
        show()///OK
###@available
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 10,135评论 0 12
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,481评论 1 10
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 8,986评论 2 4
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 5,252评论 0 3
  • Swift2.0 1.defer译为延缓、推迟之意类似栈 注意作用域,其次是调用顺序——即一个作用域结束(注意),...
    zeqinjie阅读 8,702评论 0 50

友情链接更多精彩内容