iOS/iOS

mutating

황민우 2022. 3. 17. 20:04

정의

- 스위프트에서 클래스는 참조 타입이고 구조체와 열거형은 값 타입입니다.

- 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다.

- 값 타입의 속성을 수정하기 위한 목적으로 mutating 키워드를 사용합니다.


예제

- 인스턴스 메서드에서 mutating 키워드를 사용해야 합니다.

- mutating 키워드를 사용하지 않는다면, error가 발생합니다.

struct mutatingTest {
    var x = 0.0, y = 0.0
    mutating func TestOne(x testX: Double, y testY: Double){
        print("testX: ",x)
        print("testY: ",y)
        x += testX
        print("testX: ",x)
        y += testY
        print("testY: ",y)
    }
}

var TestPrint = mutatingTest(x: 1.0, y: 1.0)
TestPrint.TestOne(x: 2.0, y: 2.0)

// 실행결과
// testX:  1.0
// testY:  1.0
// testX:  3.0
// testY:  3.0

내용 출처

https://hyerios.tistory.com/190

 

스위프트 mutating 키워드

스위프트에서 클래스는 레퍼런스 타입이고 구조체와 열거형은 값 타입입니다. 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다. 값 타입의 속성을 수정하려면 인스턴

hyerios.tistory.com

https://peppo.tistory.com/26

 

[Swift] mutating

지난시간에 구조체, 클래스를 배웠는데요! 오늘은 구조체 안에 메소드를 변경할 수 있게 해주는 mutating 메소드를 알아볼거에요 ! 구조체 mutating 사전적의미 mutate: 돌연변이가 되다. / 돌연변이를

peppo.tistory.com