SwiftUI mutating은 무엇이고 어떻게 사용하는지 (2020년 튜토리얼)

2571 단어 iosswift
모두가 알다시피 클래스는 인용 유형이고 구조와 매거는 값 유형이다.이것은 클래스 대상이 이 대상의 단일 실례를 공유하고 함수나 새 대상에게 전달할 때 같은 인용을 전달하는 것을 의미하며, 값 유형은 복사본을 만들고 값만 전달하는 유형이다
만약 우리가 클래스의 어떤 변수를 바꾸려고 시도한다면, 그것은 매우 간단하다
class Employee {
    var name : String
    var teamName : String
init(name: String, teamName: String) {
        self.name = name
        self.teamName = teamName
    }
func changeTeam(newTeamName : String){
        self.teamName = newTeamName
    }
}
var emp1 = Employee(name : "Suneet", teamName:"Engineering")
print(emp1.teamName)    //Engineering
emp1.changeTeam(newTeamName : "Product")
print(emp1.teamName)    //Product

모든 값 형식에서 같은 동작을 시도하면 컴파일 오류가 표시됩니다.
struct Employee {
    var name : String
    var teamName : String
init(name: String, teamName: String) {
        self.name = name
        self.teamName = teamName
    }
func changeTeam(newTeamName : String){
        self.teamName = newTeamName
        //cannot assign to property: 'self' is immutable
    }
}

아래가 표시됩니다.
cannot assign to property: 'self' is immutable

Struct는 값 유형이므로 속성을 직접 수정할 수 없습니다.따라서 컴파일러는 우리에게 다음과 같은 수정을 하라고 알릴 것이다
mark method 'mutating' to make 'self' mutable

이것은 값 유형에 어떤 함수에 돌연변이 키워드를 추가하면 변수를 수정할 수 있음을 명확하게 지적한다.내부에서, 우리가 돌연변이 값 형식을 시도할 때, 그 값은mutate가 가지고 있지 않지만, 그 값의 변수는mutate가 가지고 있습니다.
struct Employee {
    var name : String
    var teamName : String
init(name: String, teamName: String) {
        self.name = name
        self.teamName = teamName
    }
mutating func changeTeam(newTeamName : String){
        self.teamName = newTeamName
    }
    
}
var emp1 = Employee(name : "Suneet", teamName:"Engineering")
print(emp1.teamName)    //Engineering
emp1.changeTeam(newTeamName : "Product")
print(emp1.teamName)    //Product

값 유형

  • enum
  • struct
  • Int
  • Double
  • String
  • Array
  • Dictionary
  • Set
  • Tuple

  • 참조 유형

  • Functions
  • Closures
  • Class

  • 참조 파일

  • https://medium.com/@agrawalsuneet/mutating-in-swift-7327d8a1cddd

  • SwiftUI 자습서 및 코드 관심 분야 더 보기

  • 제 칼럼을 주목해 주세요SwiftUI 자습서 및 소스
  • 좋은 웹페이지 즐겨찾기