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的博客
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的博客
相关文章推荐
- 【iOS】Swift中扩展extension与协议protocol
- Swift中扩展extension与协议protocol
- 【iOS】Swift扩展extension和协议protocol
- 【iOS】Swift中扩展extension与协议protocol
- Firefox 扩展系列 – Firefox Extension IDL 定义组件接口
- iOS经典讲解之Swift枚举(Enum)、协议(protocol)、扩展(Extension)
- Swift 协议(protocol)和扩展(extension)
- [绍棠_Swift] Swift中扩展extension、协议protocol
- swift3新路程(10)协议protocol和扩展extension
- 第六节 协议(Protocol)和扩展(Extension)
- KD extension DLLs & KDCOM protocol
- Swift学习这二十二:扩展(extension)
- Swift入门教程15-扩展(extension)
- Swift - 类扩展(extension)
- Swift中用到extension的一些基本的扩展功能讲解
- 五 Swift学习之扩展(Extension)
- OC中的类别Category-协议Protocol-扩展Extension
- ios开发——日常之在Xcode6 后如何创建类目和延展(category&extension&protocol)
- C# 3.0 扩展方法&接口
- 第六节 协议(Protocol)和扩展(Extension)