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

你可能感兴趣的:(Swift3.0中的关键字)