Bỏ qua để đến nội dung

Optionals

Optional là một tính năng đặc trưng của Swift, cho phép biến có giá trị hoặc nil.

var name: String = "Alice"
// name = nil // Error!
var optionalName: String? = "Alice"
optionalName = nil // OK

Thêm dấu ? sau kiểu dữ liệu:

var age: Int? = 25
var email: String? = nil
var height: Double? = 1.75

Cảnh báo: Gây crash nếu giá trị là nil!

var name: String? = "Alice"
print(name!) // Alice
name = nil
// print(name!) // Runtime error: Fatal error!
var name: String? = "Alice"
if let unwrappedName = name {
print("Name: \(unwrappedName)")
} else {
print("Name is nil")
}
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)")
}
var name: String? = nil
let displayName = name ?? "Guest"
print(displayName) // Guest
var name: String? = "Alice"
let length = name?.count // Optional(5)
name = nil
let length2 = name?.count // nil
var name: String! = "Alice"
print(name) // Tự động unwrap
// Vẫn có thể nil
name = nil
// print(name) // Crash!
let name: String? = "Alice"
let age: Int? = 25
if let unwrappedName = name, let unwrappedAge = age {
print("\(unwrappedName), \(unwrappedAge) years old")
}
Swift Kotlin Ghi chú
String? String? Nullable type
name! name!! Force unwrap
if let name?.let { } Safe unwrap
name ?? "default" name ?: "default" Default value
name?.count name?.length Optional chaining

  • Type? - Optional type
  • ! - Force unwrap (nguy hiểm!)
  • if let - Safe unwrapping
  • guard let - Early return
  • ?? - Default value
  • ?. - Optional chaining
  • Tránh force unwrap ! khi có thể