多看一眼

时间真是个有趣的物事。

Swift自2014年问世,到现在都7年了。7年说长不长,可谁又能说短呢?最近又莫名其妙的捡起来看看。

看到错误处理小节中的这个售卖机处理类时,发现总也无法理解item.price <= coinsDeposited。整体核心代码是这样的:

struct Item {
    var price: Int
    var count: Int
}

class VendingMachine {
    var inventory = [
        "Candy Bar": Item(price: 12, count: 7),
        "Chips": Item(price: 10, count: 4),
        "Pretzels": Item(price: 7, count: 11)
    ]
    var coinsDeposited = 0

    func vend(itemNamed name: String) throws {
        guard let item = inventory[name] else {
            throw VendingMachineError.invalidSelection
        }

        guard item.count > 0 else {
            throw VendingMachineError.outOfStock
        }

        guard item.price <= coinsDeposited else {
            throw VendingMachineError.insufficientFunds(coinsNeeded: item.price - coinsDeposited)
        }

        coinsDeposited -= item.price

        var newItem = item
        newItem.count -= 1
        inventory[name] = newItem

        print("Dispensing \(name)")
    }
}

正准备要像以前一样遇到拦路虎就跳过时,心里似乎有个声音在说又要跟以前一样吗?又要明日复明日吗?是的,不能那样了,有些事,有些知识点,你现在不会,明天不会,以后都不会。只有啃下它,解决它,才算会了,才能解决更多更深的问题,才能走的更远。

多看一眼,仔细再瞧了瞧上面售卖机,突然脑子就亮了。很简单也很符合场景的三个判断。这个售卖机目前只售卖3种商品,它们的价钱和数量都已给出。当一个顾客准备购买商品的时候,售卖机首先要判断顾客选择的商品有没有,若有这个商品的话 继续判断这个商品的剩余数量是否大于0,两者都符合的话 最后就是要判断你账户上的钱 够不够支付你选择的这个商品价钱了。一切都符合的话 那就是后面的正常购买了--该商品数量减一,从顾客的账户扣除相应的金额。

就是这么简单。

很多事情或知识点就是这样,本身也许就很简单,但不同的人遇见之后就有不同的想法和困难,这很正常,希望以后的自己在遇到困难或者困惑时,都能多看一眼。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容