苹果公司推出的新编程语言Swift简介和入门教程

2020-01-08 22:32:28于海丽

 

5.3协议(protocol)和扩展(extension) 协议

Swift使用protocol定义协议:

复制代码
protocol ExampleProtocol {
    var simpleDescription: String { get }
    mutating func adjust()
}
类型、枚举和结构都可以实现(adopt)协议:
复制代码
class SimpleClass: ExampleProtocol {
    var simpleDescription: String = "A very simple class."
    var anotherProperty: Int = 69105
    func adjust() {
        simpleDescription += " Now 100% adjusted."
    }
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
struct SimpleStructure: ExampleProtocol {
    var simpleDescription: String = "A simple structure"
    mutating func adjust() {
        simpleDescription += " (adjusted)"
    }
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription

5.4扩展

 

扩展用于在已有的类型上增加新的功能(比如新的方法或属性),Swift使用extension声明扩展:

复制代码
extension Int: ExampleProtocol {
    var simpleDescription: String {
        return "The number (self)"
    }
    mutating func adjust() {
        self += 42
    }
}
7.simpleDescription

 

5.5泛型(generics)

Swift使用<>来声明泛型函数或泛型类型:

复制代码
func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
    var result = ItemType[]()
    for i in 0..times {
        result += item
    }
    return result
}
repeat("knock", 4)

 

Swift也支持在类、枚举和结构中使用泛型:

复制代码
// Reimplement the Swift standard library's optional type