Cодержание
Руководство Swift Struct
View more Tutorials:
-
1- Что такое Struct?
-
В Swift, Struct (структура) это особенный вид значения, который создает переменную, для хранения разных значений, но эти значения не связаны друг с другом.
-
Например, информащия о работнике включает?
-
- Код работника
- Имя работника
- Позиция
-
Вы можете создать 3 переменные, чтобы сохранить информацию работника данные выше. При этом, вы можете создать Struct, чтобы сохранить все 3 информации в единственной переменной.
-
Swift использует ключевое слово struct чтобы объявить Struct.
-
Employee.swift
import Foundation struct Employee { var empNumber:String var empName:String var position:String // Constructor. init(empNumber:String, empName:String, position:String) { self.empNumber = empNumber; self.empName = empName; self.position = position; } }
-
Пример используя Struct:
-
EmployeeTest.swift
import Foundation func test_EmployeeStruct() { // Создать переменную вида struct Employee. let john = Employee(empNumber:"E01",empName: "John",position: "CLERK") print("Emp Number: " + john.empNumber) print("Emp Name: " + john.empName) print("Emp Position: " + john.position) }
-
Изменить файл main.swift:
-
main.swift
import Foundation test_EmployeeStruct()
-
Запуск примера:
-
-
2- Struct по сравнению Class
-
Struct обычно используется для создания объекта чтобы сохранить значения, при этом класс используется более разнообразно.
-
- Struct не позволяет наследовать от class или другого struct.
- Но Struct позволяет наследовать от 1 или более Protocol.
-
Если struct появляется как параметр в функции (или методе), он передается (pass) под видом значения. При этом, если объект class-а появляется как параметр в функции (или методе), он передается (pass) к ссылка (reference).
-
-
StructVsClass.swift
import Foundation // Класс class MyClass { var name: String = "Abc" } // struct struct MyStruct { var name: String = "Abc" } // Функция, 2 параметра. // Первый параметр является классом, второй является struct. func passToMe( myClass: MyClass, myStruct: MyStruct) { // Поменять значение полю 'name'. myClass.name = "New Name" // Невозможно поменять значение поля struct. // (Оно является копией, и его поля становятся константой) // myStruct.name = "New Name" *** } func test_passToMe() { // Объект у MyClass. var mc = MyClass() print("mc.name = \(mc.name)") // Abc // Значение у MyStruct. var ms = MyStruct() print("Call passToMe function") // Передать параметры в функцию passToMe() // Примечание: Первый параметр не требует марку (Label). passToMe( mc, myStruct: ms) print("mc.name = \(mc.name)") // New Name }
-
Запуск примера:
-
-
3- Constructor в Struct
-
Struct может иметь Constructor (Метод инициализации), но не имеет Destructor (Метод отмены объекта).
-
Далее указываются некоторые заметки для Constructor:
-
- Вы можете написать один или более Constructor для struct.
- В Constructor вам нужно прикрепить значения для всех полей не имеющих значение.
-
-
4- Методы и атрибуты Struct
-
Struct может иметь методы ( method), и свойства ( property):
-
Book.swift
import Foundation struct Book { // Property var title:String { get { return self.title; } set (value) { self.title = value } } // Property var author:String { get { return self.author; } set(value) { self.author = value; } } // Constructor. init( title:String, author:String) { self.title = title; self.author = author; } // Method. func getInfo() -> String { return "Book Title: " + self.title + ", Author: " + self.author; } }
-
Смотрите далее о свойствах (Property) по ссылке:
- TODO: LINK??
-
5- Struct и Protocol
-
Struct может наследовать от одного или более Protocol.
-
- TODO: