mutating
keyword được sử dụng trong struct để chỉ định rằng một phương thức có thể thay đổi giá trị của các thuộc tính bên trong struct. Điều này là cần thiết vì mặc định, các phương thức của struct không được phép thay đổi giá trị của thuộc tính.
Dưới đây là một ví dụ đơn giản về cách sử dụng mutating
method trong struct:
struct Point {
var x: Double
var y: Double
// Mutating method để di chuyển điểm theo một khoảng x và y
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
// Tạo một đối tượng Point
var myPoint = Point(x: 10.0, y: 20.0)
// In ra giá trị ban đầu
print("Initial Point: (\(myPoint.x), \(myPoint.y))")
// Gọi phương thức mutating để di chuyển điểm
myPoint.moveBy(x: 5.0, y: 5.0)
// In ra giá trị sau khi di chuyển
print("Point after moving: (\(myPoint.x), \(myPoint.y))")
Trong ví dụ trên:
Point
là một struct đại diện cho một điểm trên mặt phẳng với các thuộc tínhx
vày
.- Phương thức
moveBy
được đánh dấu làmutating
, cho phép nó thay đổi giá trị củax
vày
. - Khi gọi phương thức
moveBy
, giá trị củamyPoint
thay đổi dựa trên giá trị được truyền vào.
Lưu ý rằng mutating
chỉ cần được sử dụng cho các phương thức trong struct. Với class, mặc định các phương thức là có thể thay đổi thuộc tính và không cần từ khóa mutating
.
Xin chào các bạn!
Bài viết này dùng AI ChatGPT viết sau đó được tôi chọn lựa, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí mang tính cá nhân về các vấn đề của tôi và giải pháp. Tôi lưu tại website này để tra cứu và chia sẻ cho cộng đồng. Tôi tin rằng nội dung này giải quyết vấn đề của tôi thì cũng giải quyết vấn đề của các bạn.
Tôi là Minh, sống tại Hà Nội. Tôi là kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Hiện nay, công việc chính của tôi là phát triển các app trên iOS và Android. Các ngôn ngữ và framework yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh