Nil-Coalescing Operator
Toán tử kiểm tra nil-coalescing được viết như sau a ?? b
thực hiện bóc giá trị optional a và kiểm tra nếu no chứa giá trị thì trả về a
nếu không thì trả về b
. Toán hạng a
luôn là kiểu giá trị optional, toán hạng b
phải cùng kiểu được chứa trong optional a
.
nil-coalescing là dạng viết tắt của dòng lệnh sau:
a != nil ? a! : b
Dòng code trên dùng toán tử điều kiện để kiểm tra giá trị của a
, và trả về giá trị a
nều có giá trị và b
nếu không chứa giá trị. Với cú pháp nil-coalescing, dòng lệnh trên được viết một các ngắn gọn và dễ nhìn hơn.
NOTE
Nếu giá trị của
a
không phải lànil
, thi giá trị củab
không được tính (Tức nếub
là một biểu thức thì nó sẽ bị bỏ qua). Tính năng này được gọi làshort-circuit evaluation
Trong đoạn ví dụ dưới đây nil-coalescing được dùng để chọn giữa haiv giá trị: tên màu, và một giá trị tên màu kiểu optional
let defaultColorName = "red"
var userDefinedColorName : String?
var colorNameToUse = userDefinedColorName ?? defaultColorName;
// userDefinedColorName co gia tri nil, nên colorNameToUse sẽ được gán tên là "red"
Biến userDefinedColorName
được định nghĩa là kiểu optional, với giá trị mặc định là nil
. Do nó là kiểu optional nên ta có thể dùng nil-coalescing để kiểm tra giá trị trong userDefinedColorName
và trả về gía trị phù hợp. Trong trường hợp này, do userDefinedColorName
có giá trị nil
nên colorNameToUse
sẽ được gán giá trị của defaultColorName
, tức là "red".
Nếu ta gán giá trị nào đó khác nil
cho userDefinedColorName
trong trường hợp này thì colorNameToUse
sẽ được gán giá trị đó giống như trong ví dụ sau:
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// Bây giờ colorNameToUse sẽ có giá trị là "green"
Last updated
Was this helpful?