Optional Trong Swift

Một trong những khái niệm mới được giới thiệu trong ngôn ngữ lập trình Swift đó là optional. Khi tiếp xúc với khái niệm mới này, nhiều bạn cảm thấy khó khăntrong việc hiểu được kiểu dữ liệu này và không phân biệt được sự khác nhau giữa optionalnil. Trong bài viết này chúng ta sẽ tìm hiểu về khái niệm optional trong Swift qua các ví dụ đơn giản.

Optional Là Gì

Optional thực chất chính là một kiểu dữ liệu. Khi một biến được định nghĩa với kiểu dữ liệu optional thì biến này có thể nhận giá trị hoặc không có giá trị nào tồn tại cho biết đó.

Để hiểu rõ hơn về kiểu dữ liệu này sau:

let string :String= "123"
var convertToNumber :Int= Int(string)

Ở ví dụ trên chúng ta khai báo biến string với kiểu dữ liệu dạng chuỗi String và biến convertToNumber với kiểu dữ liệu là số nguyên Interger. Ngoài ra chúng ta sử dụng hàm Int để chuyển đổi giá trị của string từ giá trị của chuỗi sang giá trị kiểu số.

Không có gì phức tạp phải không. OK bây giờ hãy giả sử đâu đó trong chương trình bạn thay đổi giá trị của convertToNumber thành như sau:

let badString:String= "blablabla"
convertToNumber :Int= Int(badString:String)

Lúc này, với giá trị là blablabla thì Swift không thể chuyển đổi giá trị của biến badString về dạng số và chương trình của bạn sẽ bị ngưng lại vì lỗi trên.

Nếu ở trên bạn sử dụng kiểu dữ liệu optional cho biến string thì chương trình của bạn sẽ vẫn tiếp tục được thực thi và giá trị của biến convertToString trong trường hợp trên sẽ là nil. Đoạn mã cập nhật sẽ như sau:

let string :String= "123"
var convertToNumber :Int?= Int(string)
let badString:String= "blablabla"
convertToNumber :Int= Int(badString:String)

Ở trên chúng ta sử dụng cú pháp Int? để khai báo biến convertToString với kiểu dữ liệu là optional Int. Nghĩa là biến này có thể nhận giá trị là một số nguyên hoặc không có giá trị nào hay nill.

nill

nil là giá trị đặc biệt trong Swift nó có nghĩa là không có giá trị nào và được sử dụng khi một biến được định nghĩa theo kiểu dữ liệu optional và không nhận một giá trị cụ thể.

Như vậy sự khác biệt giữa niloptional là ở chỗ kiểu dữ liệu optional sẽ bao gồm cả giá trị của nil nhưng trường hợp ngược lại không đúng.

Thêm Phản Hồi

Bài Viết Liên Quan