swift2.0学习之类型方法(类方法)

swift2.0学习之类型方法(类方法),第1张

概述和oc类似,就是通过类本身调用方法,在方法(func)关键字前面用static修饰,如果父类允许子类重载方法,就用关键字class修饰 另外,在swift中你可以为类,结构体,枚举定义类方法,而不像oc,只可以类定义类方法 通过点语法调用类方法,下面举例子说明   首先我们规定一个游戏,可以记录玩家的名字,和玩家的等级(这里就需要一个类型属性),当玩家完成一个等级后,就解锁下一个等级,(这里要判断

和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语句,大家可以自己试一试 总结

以上是内存溢出为你收集整理的swift2.0学习之类型方法(类方法)全部内容,希望文章能够帮你解决swift2.0学习之类型方法(类方法)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存