struct Task {
var count = 0
func execute(action: @escaping () -> Void) {
action()
}
func start() {
execute(action: {
print(count) // self 읽기 접근
})
}
}
non-mutating 함수 내부에서 self에 대해 읽기 접근만 하는 것은 문제없이 가능하다.
그러나 self 내부의 프로퍼티(count)에 쓰기 작업을 추가하면 아래와 같은 에러가 발생한다.
struct Task {
var count = 0
func execute(action: @escaping () -> Void) {
action()
}
func start() {
execute(action: {
count += 1 // self 쓰기 접근
})
}
}

struct Task {
var count = 0
func execute(action: @escaping () -> Void) {
action()
}
mutating func start() {
execute(action: {
count += 1
})
}
}

struct Task {
var count = 0
func execute(action: @escaping () -> Void) {
action()
}
mutating func start() {
execute(action: { [self] in
print(self.count)
})
}
}