Swift - Cấu trúc

Swift 4 cung cấp một khối xây dựng linh hoạt sử dụng các cấu trúc làm Cấu trúc. Bằng cách sử dụng các cấu trúc này một lần có thể xác định các phương thức và thuộc tính cấu trúc.

Không giống như C và Mục tiêu C

  • Cấu trúc không cần thiết phải có tệp thực thi và giao diện.

  • Cấu trúc cho phép chúng ta tạo một tệp duy nhất và tự động mở rộng giao diện của nó sang các khối khác.

Trong Cấu trúc, các giá trị biến được sao chép và chuyển trong các mã tiếp theo bằng cách trả về bản sao của các giá trị cũ để các giá trị không thể bị thay đổi.

Cú pháp

Structures are defined with a 'Struct' Keyword.
struct nameStruct {
   Definition 1
   Definition 2
   ---
   Definition N
}

Định nghĩa cấu trúc

Hãy xem xét ví dụ, giả sử chúng ta phải truy cập hồ sơ học sinh có chứa điểm của ba môn học và để tìm ra tổng số ba môn học. Ở đây markStruct được sử dụng để khởi tạo một cấu trúc có ba dấu là kiểu dữ liệu 'Int'.

struct MarkStruct {
   var mark1: Int
   var mark2: Int
   var mark3: Int
}

Truy cập cấu trúc và các thuộc tính của nó

Các thành viên của cấu trúc được truy cập bằng tên cấu trúc của nó. Các phiên bản của cấu trúc được khởi tạo bằng từ khóa 'let'.

struct studentMarks {
   var mark1 = 100
   var mark2 = 200
   var mark3 = 300
}

let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

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:

Mark1 is 100
Mark2 is 200
Mark3 is 300

Dấu học sinh được truy cập bằng tên cấu trúc 'studentMarks'. Các thành viên cấu trúc được khởi tạo là mark1, mark2, mark3 với các giá trị kiểu số nguyên. Sau đó, cấu trúc studentMarks () được chuyển đến 'mark' với từ khóa 'let'. Sau đây 'dấu' sẽ chứa các giá trị thành viên cấu trúc. Bây giờ các giá trị được in ra bằng cách truy cập các giá trị thành viên cấu trúc bằng '.' với các tên đã khởi tạo của nó.

struct MarksStruct {
   var mark: Int

   init(mark: Int) {
      self.mark = mark
   }
}

var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct     // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97

print(aStruct.mark)      // 98
print(bStruct.mark)      // 97

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:

98
97

Các phương pháp sử dụng tốt nhất của cấu trúc

Ngôn ngữ Swift 4 cung cấp chức năng xác định cấu trúc như kiểu dữ liệu tùy chỉnh để xây dựng các khối chức năng. Các thể hiện của cấu trúc được chuyển theo giá trị của nó đến các khối được xác định để thực hiện các thao tác tiếp theo.

Cần có cấu trúc

  • Để đóng gói các giá trị dữ liệu đơn giản.

  • Để sao chép dữ liệu được đóng gói và các thuộc tính liên quan của nó bằng 'giá trị' thay vì 'tham chiếu'.

  • Cấu trúc thành 'Sao chép' và 'Tham chiếu'.

Các cấu trúc trong Swift 4 truyền cho các thành viên của chúng các giá trị của chúng chứ không phải bằng các tham chiếu của nó.

struct markStruct {
   var mark1: Int
   var mark2: Int
   var mark3: Int

   init(mark1: Int, mark2: Int, mark3: Int) {
      self.mark1 = mark1
      self.mark2 = mark2
      self.mark3 = mark3
   }
}

var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)

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:

98
96
100

Một vi dụ khac

struct markStruct {
   var mark1: Int
   var mark2: Int
   var mark3: Int
   
   init(mark1: Int, mark2: Int, mark3: Int) {
      self.mark1 = mark1
      self.mark2 = mark2
      self.mark3 = mark3
   }
}

var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)

print(fail.mark1)
print(fail.mark2)
print(fail.mark3)

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:

34
42
13

Cấu trúc 'markStruct' được xác định đầu tiên với các thành viên của nó là mark1, mark2 và mark3. Bây giờ các biến của các lớp thành viên được khởi tạo để giữ các giá trị nguyên. Sau đó, bản sao của các thành viên cấu trúc được tạo bằng Từ khóa 'self'. Khi bản sao của các thành viên cấu trúc được tạo, khối cấu trúc với các dấu tham số của nó sẽ được chuyển đến biến 'mark', biến này sẽ giữ các điểm của sinh viên. Sau đó, các dấu được in là 98, 96, 100. Bước tiếp theo đối với các thành viên cấu trúc giống nhau, một thể hiện khác có tên 'fail' được sử dụng để trỏ các thành viên cấu trúc giống nhau với các dấu khác nhau. Sau đó, kết quả bây giờ được in dưới dạng 34, 42, 13. Điều này giải thích rõ ràng rằng các cấu trúc sẽ có một bản sao của các biến thành viên sau đó chuyển các thành viên đến các khối chức năng sắp tới của chúng.