开发经常用到这两个,从实现的角度来讲他们的功能吧!
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的博客
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。