Swift - Đăng ký

Việc truy cập các thành viên phần tử của tập hợp, trình tự và danh sách trong Lớp, Cấu trúc và Kiểu liệt kê được thực hiện với sự trợ giúp của các chỉ số con. Các chỉ số con này được sử dụng để lưu trữ và truy xuất các giá trị với sự trợ giúp của chỉ mục. Các phần tử của mảng được truy cập với sự trợ giúp của someArray [chỉ mục] và các phần tử thành viên tiếp theo của nó trong một cá thể Từ điển có thể được truy cập dưới dạng someDicitionary [key].

Đối với một loại duy nhất, các chỉ số con có thể có từ một khai báo đến nhiều khai báo. Chúng ta có thể sử dụng chỉ số con thích hợp để nạp chồng loại giá trị chỉ mục được chuyển đến chỉ số con. Các chỉ số cũng có phạm vi từ một thứ nguyên đến nhiều thứ nguyên tùy theo yêu cầu của người dùng đối với khai báo kiểu dữ liệu đầu vào của họ.

Cú pháp khai báo chỉ số con và cách sử dụng nó

Hãy tóm tắt lại các thuộc tính được tính toán. Các đăng ký cũng tuân theo cùng một cú pháp như của các thuộc tính được tính toán. Đối với phiên bản kiểu truy vấn, các chỉ số con được viết bên trong một dấu ngoặc vuông theo sau với tên phiên bản. Cú pháp chỉ số phụ tuân theo cùng một cấu trúc cú pháp như cú pháp của 'phương thức phiên bản' và 'thuộc tính được tính toán'. Từ khóa 'subscript' được sử dụng để xác định chỉ số phụ và người dùng có thể chỉ định một hoặc nhiều tham số với kiểu trả về của chúng. Các chỉ số con có thể có các thuộc tính đọc-ghi hoặc chỉ đọc và các thể hiện được lưu trữ và truy xuất với sự trợ giúp của các thuộc tính 'getter' và 'setter' giống như các thuộc tính được tính toán.

Cú pháp

subscript(index: Int) −> Int {
   get {
      // used for subscript value declarations
   }
   set(newValue) {
      // definitions are written here
   }
}

Ví dụ 1

struct subexample {
   let decrementer: Int
   subscript(index: Int) -> Int {
      return decrementer / index
   }
}
let division = subexample(decrementer: 100)

print("The number is divisible by \(division[9]) times")
print("The number is divisible by \(division[2]) times")
print("The number is divisible by \(division[3]) times")
print("The number is divisible by \(division[5]) times")
print("The number is divisible by \(division[7]) times")

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

The number is divisible by 11 times
The number is divisible by 50 times
The number is divisible by 33 times
The number is divisible by 20 times
The number is divisible by 14 times

Ví dụ2

class daysofaweek {
   private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
      "Thursday", "Friday", "saturday"]
   subscript(index: Int) -> String {
      get {
         return days[index]
      }
      set(newValue) {
         self.days[index] = newValue
      }
   }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

Sunday
Monday
Tuesday
Wednesday

Tùy chọn trong Chỉ số

Các chỉ số đăng ký nhận đơn đến nhiều tham số đầu vào và các tham số đầu vào này cũng thuộc về bất kỳ kiểu dữ liệu nào. Họ cũng có thể sử dụng các tham số biến và đa dạng. Các đăng ký không thể cung cấp các giá trị tham số mặc định hoặc sử dụng bất kỳ tham số đầu vào nào.

Định nghĩa nhiều chỉ số con được gọi là 'nạp chồng chỉ số con' trong đó một lớp hoặc cấu trúc có thể cung cấp nhiều định nghĩa chỉ số con theo yêu cầu. Nhiều chỉ số con này được suy ra dựa trên loại giá trị được khai báo trong dấu ngoặc nhọn chỉ số con.

struct Matrix {
   let rows: Int, columns: Int
   var print: [Double]
   init(rows: Int, columns: Int) {
      self.rows = rows
      self.columns = columns
      print = Array(count: rows * columns, repeatedValue: 0.0)
   }
   subscript(row: Int, column: Int) -> Double {
      get {
         return print[(row * columns) + column]
      }
      set {
         print[(row * columns) + column] = newValue
      }
   }
}
var mat = Matrix(rows: 3, columns: 3)

mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

print("\(mat[0,0])")

Khi chúng tôi chạy chương trình trên bằng sân chơi, chúng tôi nhận được kết quả sau:

1.0

Swift 4 subscript hỗ trợ một tham số cho nhiều khai báo tham số cho các kiểu dữ liệu thích hợp. Chương trình khai báo cấu trúc 'Matrix' là ma trận mảng 2 * 2 chiều để lưu các kiểu dữ liệu 'Double'. Tham số Matrix được nhập với kiểu dữ liệu Integer để khai báo hàng và cột.

Thể hiện mới cho Ma trận được tạo bằng cách chuyển số hàng và số cột vào lần khởi tạo như hình dưới đây.

var mat = Matrix(rows: 3, columns: 3)

Giá trị ma trận có thể được xác định bằng cách chuyển các giá trị hàng và cột vào chỉ số con, được phân tách bằng dấu phẩy như hình dưới đây.

mat[0,0] = 1.0  
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0