您的位置:首页 > 移动开发 > Swift

Swift 接口和扩展(Protocol&Extension)

2017-03-01 10:42 211 查看
开发经常用到这两个,从实现的角度来讲他们的功能吧!

protocol

protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}

类、枚举和结构体都可以实现接口。
先看一下类:

class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}

var oneSimp = SimpleClass()
oneSimp.adjust()

再看一下结构体:
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = " struct"
mutating func adjust() {
simpleDescription += "(adjusted)"
}
}
var oneStruct = SimpleStructure()
oneStruct.adjust()
枚举也可以的:

enum SimpleEnum: ExampleProtocol {
case first(String),second(String)
var simpleDescription: String {
get {
switch self {
case .first("first"):
return "first"
default:
return "second"
}
}
set {
switch self {
case .first("first"):
self = .first(newValue)
default:
self = .second(newValue)
}
}
}
mutating func adjust() {
switch self {
case .first:
self = .first("1" + "first")
default:
self = .second("2" + "second")
}
}
}

var oneEnum = SimpleEnum.first("lv")
oneEnum.adjust()Extesion:

使用 extension
来为现有的类型添加功能,比如添加一个计算属性的方法。你可以使用扩展
来给任意类型添加协议,甚至是你从外部库或者框架中导入的类型。
extension Int: ExampleProtocol {
var simpleDescription: String{
return "Int"
}
mutating func adjust() {
self += 10
}
}
使用起来特别方便,好好学习吧,加油!
如果转载请注明转于:AirZilong的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift ios开发