Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol
来源:互联网 发布:网络信息群发软件 编辑:程序博客网 时间:2024/06/18 10:53
//: Playground - noun: a place where people can playimport UIKit/* * 本节主要内容: * 1.枚举 / 结构体 / 类遵循协议 */protocol Togglable { mutating func toggle() // 没有大括号}// OnOffSwitch枚举类型遵循了Togglable协议enum OnOffSwitch: Togglable { case Off case On mutating func toggle() { switch self { case .Off: self = .On case .On: self = .Off } }}var switchOne = OnOffSwitch.Onvar array: Array<Int> = []protocol FullNamed { // 属性: var + 类型 + get / get set var fullName: String { get } // { get set } // 自定义方法 func randomValue() -> Int // 类型方法(和类型属性对应) static func someTypeMethod() // mutating关键词的方法 mutating func changeName(newName: String)}struct Person: FullNamed { // ***如果协议的属性是只读, 结构体遵循协议, 属性没有任何要求 // 存储属性 var fullName: String { get { return "" } set { } } var firstName: String? func randomValue() -> Int { return Int(arc4random()%50) } static func someTypeMethod() { print("Call the someTypeMethod.") } mutating func changeName(newName: String) { fullName = newName }}Person.someTypeMethod()protocol Pet { var name: String { get set } var birthPlace: String { get } func playWith() func fedWith(food: String) func changeName(newName: String)}// class Dog: SuperClass, ProtocolNameclass Dog: Pet { private var myDoggyName = "Puppy" var name: String { get { return myDoggyName } set { myDoggyName = newValue } } var birthPlace: String = "Beijing" func playWith() { print("Play with it for a while.") } func fedWith(food: String = "Bone") { if food == "Bone" { print("Happy") } else { print("Unhapy") } } func changeName(newName: String) { name = newName }}/* * 思考问题: 假设没有声明Pet宠物协议; 声明Pet类, 让dog类继承于Pet */import UIKit/* * 本节内容: 实现笔记中的流程图 */protocol Pet { var name: String { get set }}protocol Flyable { var flySpeed: Double { get } var flyHeight: Double { get }}class Animal { }class Dog: Animal, Pet { var name: String = "Puppy"}class Cat: Animal, Pet { var name: String = "Kitty"}class Bird: Animal, Flyable { var flySpeed: Double var flyHeight: Double init(flySpeed: Double, flyHeight: Double) { self.flySpeed = flySpeed self.flyHeight = flyHeight }}class Parrot: Bird, Pet { var name: String init(name: String, flySpeed: Double, flyHeight: Double) { self.name = name super.init(flySpeed: flySpeed, flyHeight: flyHeight) }}class Sparrow: Bird { var color = UIColor.gray}class Vehicle { }class Plane: Vehicle, Flyable { var flySpeed: Double var flyHeight: Double init(flySpeed: Double, flyHeight: Double) { self.flySpeed = flySpeed self.flyHeight = flyHeight }}
0 0
- Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol
- 【Swift学习笔记00】——enumeration枚举类型遵循协议protocol
- 【Swift学习笔记】——enumeration枚举类型遵循协议protocol
- Swift学习 协议Protocol
- Swift-枚举、结构体、协议
- Swift-枚举、结构体、类
- Swift 学习笔记 [2] 类 结构体 枚举
- swift的枚举、结构体、协议和延展
- Swift 系统学习 22 分析错误的三个阶段 (枚举和结构体相关)
- iOS巅峰之Swift结构体和类, 枚举, 构造器, 继承, 协议, 扩展(完结篇)
- Swift 类,结构体,枚举使用总结
- Swift 系统学习 15 枚举
- swift 枚举和结构体
- Swift-枚举和结构体
- Swift枚举和结构体
- Swift 枚举和结构体
- Swift协议(Protocol)
- Swift - 协议(protocol)
- vue.js学习之ESlint的“坑”
- 映射网络驱动器的批处理文件(批处理映射网络驱动器开机启动)
- 使用git开发新功能,新需求
- ubuntu16.04下安装搜狗输入法
- linux之chdir解析
- Swift 系统学习 30 枚举 结构体 类 遵循协议 protocol
- iBET Poker Card Lucky Draw
- CString和LPCSTR区别
- Line belt HDU
- git学习笔记
- 喵哈哈村的种花魔法
- 如何快速启用或者禁用本地连接
- 基础理论知识复习(下)
- oracle keep函数