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,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, 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í cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ 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