swift2.0学习之类型方法(类方法)
来源:互联网 发布:java中类和对象的关系 编辑:程序博客网 时间:2024/06/17 23:44
和oc类似,就是通过类本身调用方法,在方法(func)关键字前面用static修饰,如果父类允许子类重载方法,就用关键字class修饰
另外,在swift中你可以为类,结构体,枚举定义类方法,而不像oc,只可以类定义类方法
通过点语法调用类方法,下面举例子说明
首先我们规定一个游戏,可以记录玩家的名字,和玩家的等级(这里就需要一个类型属性),当玩家完成一个等级后,就解锁下一个等级,(这里要判断传进来的等级和玩家完成的最高等级),玩家就用类来表示创建,等级的事用结构体创建
struct LevelTracker { static var highestUnlockedLevel = 1 static func unlockLevel(level: Int) { if level > highestUnlockedLevel { highestUnlockedLevel = level } } static func levelIsUnlocked(level: Int) -> Bool { return level <= highestUnlockedLevel } var currentLevel = 1 mutating func advanceToLevel(level: Int) -> Bool { if LevelTracker.levelIsUnlocked(level) { currentLevel = level return true }else{ return false } } }解释:(关卡默认为1)第一个函数就表示当传进来的值大于当前关卡时,更新当前玩家到达的最大关卡,完成解锁功能
第二个函数和第三个函数关联,就是判断玩家的当前关卡的值是多少
class Player { var trackLevel = LevelTracker() let playerName: String func completedLevel(level: Int) { LevelTracker.unlockLevel(level + 1) trackLevel.advanceToLevel(level + 1) } init(name: String) { playerName = name }}解释:这个就是一个类的定义了,包括玩家的名字,和玩家玩到的等级(关卡)
var player = Player(name: "xiaoyu") player.completedLevel(1) print("highest unlocked level is now \(LevelTracker.highestUnlockedLevel)") player = Player(name: "rainShen") player.completedLevel(6) print("highest unlocked level is now \(LevelTracker.highestUnlockedLevel)") player = Player(name: "cainiao") guard player.trackLevel.advanceToLevel(6) else { print("level 6 has not been unlocked") return } print("play is now at level 6")解释:当传进去的level的值为6时,表示玩家到达的最大关卡为7,cainiao的函数传进去的是6,所以不会走else语句,但是当传进去的值是大于6时,就会大于LevelTracker.highestUnlockedLevel的值,返回为false,所以这时会走else语句,大家可以自己试一试
0 0
- swift2.0学习之类型方法(类方法)
- swift2.0学习之类型转换
- swift2 方法
- Swift2-0基础_Methods(方法)
- swift2.0学习之拓展
- Swift2.0语言教程之类的方法
- swift2.0学习笔记之字符串遍历
- swift2.0学习笔记之网络请求
- Swift2.0学习一
- Swift2.0学习二
- Swift2.0学习三
- swift2.0 之 关键字
- Swift2.0——构造方法的使用
- 《swift2.0 官方教程中文版》 第2章-11方法
- .NET2.0 学习 之 可空类型,匿名方法
- swift2.0学习笔记之json数据解析
- swift2.0学习笔记之实现图片变圆
- Swift2.0 类基础知识
- source-php-usort
- mysql处理高并发数据,防止数据超读
- linux命令——tar
- Windows command中的Git代理设置
- (一〇八)iPad开发之横竖屏适配
- swift2.0学习之类型方法(类方法)
- 超级快速幂
- xode自动对齐快捷键
- HBuilder开发App教程12-详情页,删除和退出
- 用 matplotlib 画等高线
- 我的C语言入门到精通之路 day07
- iPhone开发入门系列1(iOS8+Swift版)天天打靶APP学习07-09
- window平台单进程多线程服务器通信
- Java心得7