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

和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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值