Swift 接口和扩展(Protocol&Extension)
发布时间:2020-12-14 06:25:01 所属栏目:百科 来源:网络整理
导读:开发经常用到这两个,从实现的角度来讲他们的功能吧! protocol protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust()} 类、枚举和结构体都可以实现接口。 先看一下类: class SimpleClass: ExampleProtocol { var sim
开发经常用到这两个,从实现的角度来讲他们的功能吧! 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的博客 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |