swift methods scraps

// Methods are functions associate with types: Class, Structs and Enums

// 1. Type methods: like type properties, they are static and tied with Type

// 2. Instance methods: belong to specific instance


struct Count{

    var count = 0

    // stuct and enum are value types

    // by default property of value type cannot be modified within it's 

    // instance methods. hence below you put a mutating keyword

    mutating func increment() {

        self.count += 1 // you can also put count += 1

    }

    

    mutating func increment(by count:Int){

        self.count = self.count + count

        // parameter take precedence when name are same

    }

    

    mutating func reset(){

        count = 0

    }

    // u can create a new instance and assign it to self

    mutating func assignNewCount(by startCount:Int){

        self = Count(count : startCount)

    }

    

}


// though you put mutating to amend the var property in Struct or Enum

// but if you assign it to a constant instance, you can't amend

// because it's value type and constant can't amend


let cantAmend = Count()

//cantAmend.increment()


enum Direction{

    case Shang,Xia,Zuo,You

    mutating func next(){

        switch self {

        case .Shang:

            self = .Xia

        case .Xia:

            self = .Zuo

        case .Zuo:

            self = .You

        case .You:

            self = .Shang

        }

    }

}


var someDirection = Direction.Shang

print(someDirection)

someDirection.next()

print(someDirection)




// ************   Type methods AKA static/class methods *************

// 1. within Type methods, self refer to the Type

// 2. diff from inst methods, in type methods you call type propty directly


// example from guide


struct LevelTracker {

    var currentLevel = 1

    static var maxLevel = 1

    static func unLock(_ level:Int){

        if(level>maxLevel){

            maxLevel=level

        }

    }

    static func isUnlocked(_ level:Int) -> Bool {

        return level <= maxLevel

    }

    // add mutating because you are about to amend struct property

    mutating func advance(_ level: Int){

        if(LevelTracker.isUnlocked(level)){ // because it's instance method

            currentLevel = level

        }

    }

}


class Player {

    var levelTracker = LevelTracker()

    let playerName:String

    init(name:String){

        playerName = name // for instance method, you can omit self

    }

    func complete(_ level:Int){

        LevelTracker.unLock(level+1)

        levelTracker.advance(level+1)

    }

}



var playerA = Player(name: "zhangsan")

var playerB = Player(name: "Lisi")


playerA.complete(3)

playerA.levelTracker.advance(2)

playerA.levelTracker.currentLevel

playerB.levelTracker.currentLevel

playerB.levelTracker.advance(2)

playerB.levelTracker.currentLevel




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值