mutating
키워드를 붙여야한다.struct LevelStruct{
var level: Int = 0
{
didSet{
print("Level \(level)")
}
}
mutating func levelUp(){
print("level up")
level += 1
}
mutating func levelDown(){
print("level down")
level -= 1
if level < 0{
reset()
}
}
mutating func jumpToLevel(to: Int){
print("jump to level \(to)")
level = to
}
mutating func reset(){
level = 0
print("level 0")
}
}
mutating
키워드를 함수 앞에 붙이지 않는다면, 컴파일이 되지 않는다.
self
프로퍼티에 다른 인스턴스를 할당할 수 없지만, 값 타입인 구조체와 열거형 같은 경우에는 할당할 수 있다.class LevelClass{
var level:Int = 0
func reset(){
self = LevelClass()
}
}
struct LevelStruct{
var level: Int = 0
func reset(){
self = LevelStruct()
}
}
static
을 통해 선언한 타입 메소드는 상속 후 재정의가 불가능하고, class
타입 메소드는 상속 후 재정의가 가능하다.self
메소드는 해당 타입명
과 동일하며 Self
키워드와도 동일하다. 즉 self
== 타입명
== Self
이다.