Từ khóa ‘mutating’ trong Swift có nghĩa là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
135 lượt xem
Swift middle

Là kiểu giá trị, struct là immutable (bất biến). Có nghĩa là các biến khác không thể thay đổi giá trị của struct tại bất kỳ điểm nào.

Từ mutating chỉ được yêu cầu để thay đổi giá trị của các biến tự bên trong hàm của struct.

Ví dụ:

struct MyStruct {
   var abc: String = "initila value"

   func changeValue() {
      abc = "some other value". //Compile time error: Cannot assign to property: 'self' is immutable. Mark method 'mutating' to make 'self' mutable.
   }
}

Ở đây khi chúng ta đang cố gắng thay đổi giá trị của biến abc bên trong hàm được khai báo trong chính struct, chúng ta nhận được lỗi thời gian biên dịch.

Vì vậy, ở đây chúng ta cần thực hiện biến đổi hàm để thực hiện thay đổi giá trị bên trong struct. Do đó mã chính xác sẽ là:

struct MyStruct {
   var abc: String = "initila value"

   mutating func changeValue() {
      abc = "some other value"
   }
}
{{login.error}}