- Bài 1: Tổng quan ngôn ngữ Swift
- Bài 2: Hướng dẫn cài đặt Xcode và chạy một playground
- Bài 3: Những cú pháp cơ bản trong swift
- Bài 4: Kiểu dữ liệu
- Bài 5: Toán tử trong ngôn ngữ lập trình Swift
- Bài 6: Câu lệnh rẽ nhánh trong swift – Decision Making
- Bài 7: Chuỗi ký tự trong Swift - Character và String
- Bài 8: Vòng lặp trong swift – Loops
- Bài 9: Mảng Array trong swift
- Bài 10: Dictionary trong swift
- Bài 11: Optional trong Swift
- Bài 12: Functions trong swift
- Bài 13: Closure trong swift
- Bài 14: Enumeration trong swift
- Bài 15: Struct trong swift
- Bài 16: Classes trong swift
- Bài 17: Properties trong swift
- Bài 18: Methods trong swift
- Bài 19: Subscripts trong swift
- Bài 20: Inheritance trong swift
- Bài 21: Initialization trong swift
- Bài 22: Deinitialization trong swift
- Bài 23: ARC trong swift
- Bài 24: Type casting trong swift
- Bài 25: Extensions trong swift
- Bài 26: Protocols trong swift
- Bài 27: Generics trong swift
- Bài 28: Access control trong swift
Bài 19: Subscripts trong swift - Lập trình Swift cơ bản
Đăng bởi: Admin | Lượt xem: 2082 | Chuyên mục: Swift
Khái niệm
Subscript được hiểu là một lối tắt để truy xuất thành viên trong một danh sách, trình tự hay một tập hợp. Lập trình viên hoàn toàn có thể sử dụng subscript để thiết lập và truy xuất giá trị từ các thay vì sử dụng những phương thức riêng biệt để thiết lập và truy xuất.
Cú pháp
Tham khảo ví dụ dưới đây để hiểu rõ hơn nhé.
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
Kiểu của newValue phải giống với kiểu trả về của subscript.
Khác với instance method thì subscript có thể đọc viết hoặc chỉ đọc.
Ví dụ:
Ví dụ:
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// Prints "six times three is 18"
Cách sử dụng
Công dụng của subscript là sử dụng để truy xuất các thành viên trong một danh sách,tập hợp hay một trình tự. Bạn hoàn toàn có thể thực hiện subscript cho tính năng của class hoặc struct cụ thể của bạn.
Ví dụ:
Kiểu Dictionary của Swift, thực thi một subscript để thiết lập và truy xuất giá trị lưu trữ bên trong một thể hiện của Dictionary. Bạn có thể truy xuất giá trị của dictionary bằng việc cung cấp key của từ khóa của dictionary và gán giá trị cho một subscript.
Ví dụ:
Kiểu Dictionary của Swift, thực thi một subscript để thiết lập và truy xuất giá trị lưu trữ bên trong một thể hiện của Dictionary. Bạn có thể truy xuất giá trị của dictionary bằng việc cung cấp key của từ khóa của dictionary và gán giá trị cho một subscript.
Subscript option
Subscript có thể lấy cũng như trả về bất kỳ dữ liệu hay những tham số nào . Ngoài ra, Subscript có thể sử dụng variable parameters và variadic parameters, nhưng không thể sử dụng in-out parameters hoặc cung cấp giá trị mặc định cho tham số.
Một class hoặc struct có thể cung cấp nhiều subscript khác nhau để thực thi khi nó cần. Đối với những subscript thích hợp sẽ được sử dụng sẽ suy luận dựa trên kiểu của giá trị của subscript tại điểm mà subscript được sử dụng. Theo ví dụ bên dưới định nghĩa một cấu trúc Matrix, đại diện cho ma trận 2 chiều cho kiểu giá trị Double. Subscript của cấu trúc Matrix có 2 tham số kiểu int như sau:
struct Matrix {
let rows: Int, columns: Int
var grid: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0.0)
}
func indexIsValidForRow(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row: Int, column: Int) -> Double {
get {
assert(indexIsValidForRow(row, column: column), "Index out of range")
return grid[(row * columns) + column]
}
set {
assert(indexIsValidForRow(row, column: column), "Index out of range")
grid[(row * columns) + column] = newValue
}
}
}
Để lấy được 2 tham số row và col thì Matrix phải cung cấp một trình khởi tạo và từ đó tạo một array đủ lớn để lưu trữ giá trị row * col kiểu Double. Mỗi vị trí trong Matrix được cho giá trị khởi tạo là 0.0. Để đạt được điều này thì kích thước của mảng và giá trị ô khởi tạo của 0.0 được thông qua bởi một trình khởi tạo mảng, để tạo và khởi tạo một mảng mới với kích thước chính xác.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Swift
- Bài 2: Hướng dẫn cài đặt Xcode và chạy một playground
- Bài 3: Những cú pháp cơ bản trong swift
- Bài 4: Kiểu dữ liệu
- Bài 5: Toán tử trong ngôn ngữ lập trình Swift
- Bài 6: Câu lệnh rẽ nhánh trong swift – Decision Making
- Bài 7: Chuỗi ký tự trong Swift - Character và String
- Bài 8: Vòng lặp trong swift – Loops
- Bài 9: Mảng Array trong swift
- Bài 10: Dictionary trong swift
- Bài 11: Optional trong Swift
- Bài 12: Functions trong swift
- Bài 13: Closure trong swift
- Bài 14: Enumeration trong swift
- Bài 15: Struct trong swift
- Bài 16: Classes trong swift
- Bài 17: Properties trong swift
- Bài 18: Methods trong swift
- Bài 19: Subscripts trong swift
- Bài 20: Inheritance trong swift
- Bài 21: Initialization trong swift
- Bài 22: Deinitialization trong swift
- Bài 23: ARC trong swift
- Bài 24: Type casting trong swift
- Bài 25: Extensions trong swift
- Bài 26: Protocols trong swift
- Bài 27: Generics trong swift
- Bài 28: Access control trong swift