Trong Swift, dấu ?
và !
được sử dụng để làm việc với giá trị tùy chọn (Optional), nhưng có ý nghĩa và ứng dụng khác nhau:
Mục Lục
1. Dấu ?
(Optional Chaining):
- Sử Dụng:
- Dấu
?
được sử dụng trong trường hợp bạn muốn làm việc với giá trị tùy chọn mà có thể lànil
mà không gây ra lỗi.
- Dấu
- Ví Dụ:
let optionalValue: Int? = someFunctionThatReturnsOptionalValue()
let unwrappedValue = optionalValue?.someProperty
- Ứng Dụng:
- Thường được sử dụng trong các chuỗi phương thức và thuộc tính khi giá trị tùy chọn có thể là
nil
. Nó giúp tránh được lỗi crash do giá trịnil
.
- Thường được sử dụng trong các chuỗi phương thức và thuộc tính khi giá trị tùy chọn có thể là
2. Dấu !
(Forced Unwrapping):
- Sử Dụng:
- Dấu
!
được sử dụng khi bạn chắc chắn rằng một giá trị tùy chọn không phải lànil
và bạn muốn “bắt buộc” (force) trích xuất giá trị bên trong.
- Dấu
- Ví Dụ:
let optionalValue: Int? = someFunctionThatReturnsOptionalValue()
let unwrappedValue = optionalValue!.someProperty
- Cảnh Báo:
- Sử dụng dấu
!
có thể dẫn đến crash nếu giá trị thực sự lànil
. Nó yêu cầu lập trình viên đảm bảo giá trị không phải lànil
trước khi sử dụng.
- Sử dụng dấu
3. Ý Nghĩa Chung:
- Cả dấu
?
và!
đều liên quan đến giá trị tùy chọn và được sử dụng để làm cho mã nguồn Swift an toàn hơn khi làm việc với giá trị có thể lànil
. - Sự chọn lựa giữa
?
và!
phụ thuộc vào từng trường hợp cụ thể và mức độ tin cậy của giá trị tùy chọn.
Tóm lại, sự chọn lựa giữa dấu ?
và !
phụ thuộc vào ngữ cảnh và yêu cầu cụ thể của việc làm việc với giá trị tùy chọn trong mã nguồn của bạn.
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