Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Swift là ngôn ngữ hiện đại do Apple thiết kế để phát triển ứng dụng iOS, macOS, watchOS và nhiều nền tảng khác. Cú pháp sạch, an toàn và khá dễ đọc. Bài viết này điểm qua các khái niệm đầu tiên bạn nên biết, kèm ví dụ chạy được.
Để làm ứng dụng iOS bạn cần máy Mac chạy Xcode. Nếu chỉ muốn học cú pháp, có thể dùng Swift Playgrounds hoặc các trình chạy Swift trực tuyến. Xcode có sẵn Playground để thử code và xem kết quả tức thì.
let name = "Bem" // hằng, không đổi
var age = 20 // biến, có thể đổi
age += 1
let price: Double = 19.5
let isActive = true
let tags = ["swift", "ios"] // mảng
let scores = ["an": 8, "binh": 9] // từ điển
print("Xin chào \(name), \(age) tuổi")
Swift suy luận kiểu và rất chặt chẽ: bạn không thể cộng trực tiếp Int với Double mà không chuyển đổi. Quy tắc nên nhớ là dùng let mặc định, chỉ dùng var khi giá trị cần thay đổi.
func greet(person: String, from city: String = "Hà Nội") -> String {
return "Chào \(person) đến từ \(city)"
}
print(greet(person: "Lan"))
print(greet(person: "Minh", from: "Đà Nẵng"))
Swift có nhãn tham số (argument label), làm lời gọi hàm đọc gần như một câu tự nhiên.
let score = 85
switch score {
case 90...100: print("Xuất sắc")
case 70..<90: print("Khá")
default: print("Cần cố gắng")
}
for i in 1...3 {
print("Lần \(i)")
}
let names = ["An", "Bình", "Chi"]
for (index, n) in names.enumerated() {
print(index, n)
}
Cả hai đều định nghĩa kiểu có thuộc tính và phương thức. Khác biệt quan trọng: struct là kiểu giá trị (khi gán sẽ sao chép), class là kiểu tham chiếu (nhiều biến cùng trỏ một đối tượng) và hỗ trợ kế thừa. Swift khuyến khích dùng struct trước, chuyển sang class khi cần danh tính chung hoặc kế thừa.
struct Student {
var name: String
var grade: Int
func describe() -> String {
"\(name) - lớp \(grade)"
}
}
var a = Student(name: "An", grade: 10)
var b = a
b.name = "Bình"
print(a.name) // vẫn là "An"
Closure là khối code có thể truyền đi như giá trị, tương tự lambda ở ngôn ngữ khác:
let numbers = [1, 2, 3, 4, 5]
let doubled = numbers.map { $0 * 2 }
let evens = numbers.filter { $0 % 2 == 0 }
let total = numbers.reduce(0, +)
print(doubled, evens, total)
Protocol định nghĩa một tập yêu cầu mà kiểu nào đó phải thực hiện, giống interface ở ngôn ngữ khác. Swift hay được mô tả là ngôn ngữ hướng protocol vì cách tiếp cận này.
protocol Describable {
func describe() -> String
}
extension Student: Describable {}
Swift an toàn, gọn và dễ học nếu bạn đi từng bước: biến, hàm, struct, closure, protocol. Chỉ cần nắm vững các nền tảng này là bạn đã sẵn sàng bước vào SwiftUI và làm ứng dụng iOS đầu tiên.
Hai chủ đề bạn sẽ gặp rất sớm là xử lý lỗi và tác vụ bất đồng bộ. Swift dùng cơ chế throw, try, catch: hàm có thể ném lỗi được đánh dấu throws, và nơi gọi phải xử lý bằng do-catch hoặc truyền tiếp.
enum InputError: Error {
case empty
case tooShort
}
func validate(_ text: String) throws -> String {
guard !text.isEmpty else { throw InputError.empty }
guard text.count >= 3 else { throw InputError.tooShort }
return text
}
do {
let ok = try validate("ab")
print(ok)
} catch InputError.tooShort {
print("Quá ngắn")
} catch {
print("Lỗi khác: \(error)")
}
Với bất đồng bộ, Swift hiện đại dùng async và await giúp code chạy tuần tự dễ đọc khi gọi mạng, thay cho các closure lồng nhau. Hàm async được gọi bên trong Task hoặc một ngữ cảnh async khác. Hãy làm quen sớm với hai khái niệm này vì hầu như mọi ứng dụng thực tế đều cần.
Hãy đặt mục tiêu nhỏ mỗi ngày: viết một hàm, một struct, một đoạn xử lý mảng. Thử giải các bài toán cơ bản như đảo chuỗi, đếm từ, kiểm tra số nguyên tố bằng Swift để quen cú pháp. Sau hai tuần, chuyển sang dựng giao diện nhỏ bằng SwiftUI như bộ đếm hay danh sách việc cần làm. Đọc mã của người khác trên các kho mã nguồn mở cũng giúp bạn học phong cách viết Swift chuẩn.
Bạn có thể xem các lộ trình học lập trình di động phù hợp với mình trên codebem.com.
Nguyễn Đình Cường
0 comment