Swift - Struktury
Swift 4 zapewnia elastyczny blok konstrukcyjny umożliwiający używanie konstrukcji jako struktur. Korzystając z tych struktur, można raz zdefiniować metody i właściwości konstrukcji.
W przeciwieństwie do C i Objective C
Struktura nie musi wymagać plików implementacyjnych i interfejsu.
Struktura pozwala nam stworzyć pojedynczy plik i automatycznie rozszerzyć jego interfejs na inne bloki.
W Structure wartości zmiennych są kopiowane i przekazywane w kolejnych kodach przez zwrócenie kopii starych wartości, aby nie można było ich zmienić.
Składnia
Structures are defined with a 'Struct' Keyword.
struct nameStruct {
Definition 1
Definition 2
---
Definition N
}
Definicja konstrukcji
Rozważmy na przykład, załóżmy, że musimy uzyskać dostęp do rekordu uczniów zawierającego oceny z trzech przedmiotów i znaleźć w sumie trzy przedmioty. Tutaj markStruct jest używany do inicjalizacji struktury z trzema znacznikami jako typem danych „Int”.
struct MarkStruct {
var mark1: Int
var mark2: Int
var mark3: Int
}
Dostęp do struktury i jej właściwości
Dostęp do członków struktury uzyskuje się za pomocą nazwy struktury. Instancje struktury są inicjowane za pomocą słowa kluczowego „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)")
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
Mark1 is 100
Mark2 is 200
Mark3 is 300
Oceny uczniów są dostępne po nazwie struktury „studentMarks”. Składowe struktury są inicjowane jako mark1, mark2, mark3 z wartościami typu integer. Następnie struktura studentMarks () jest przekazywana do 'marks' za pomocą słowa kluczowego 'let'. Odtąd „znaki” będą zawierały wartości elementów konstrukcji. Teraz wartości są drukowane po uzyskaniu dostępu do wartości elementów struktury za pomocą „.” z jego zainicjowanymi nazwami.
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
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
98
97
Najlepsze praktyki użytkowania konstrukcji
Język Swift 4 zapewnia funkcjonalność definiowania struktur jako niestandardowych typów danych do budowania bloków funkcyjnych. Instancje struktury są przekazywane przez jej wartość do zdefiniowanych bloków w celu dalszych manipulacji.
Potrzeba posiadania struktur
Hermetyzacja prostych wartości danych.
Aby skopiować zhermetyzowane dane i związane z nimi właściwości za pomocą „wartości” zamiast „odniesień”.
Struktura „Kopiuj” i „Odnośnik”.
Struktury w Swift 4 przekazują swoim członkom swoje wartości, a nie referencje.
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)
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
98
96
100
Inny przykład
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)
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
34
42
13
Strukturę „markStruct” definiuje się najpierw za pomocą jej elementów składowych mark1, mark2 i mark3. Teraz zmienne klas składowych są inicjalizowane do przechowywania wartości całkowitych. Następnie tworzona jest kopia elementów struktury za pomocą słowa kluczowego „self”. Po utworzeniu kopii prętów konstrukcji blok strukturalny wraz ze znacznikami parametrów jest przekazywany do zmiennej „marks”, która będzie teraz przechowywać oceny uczniów. Następnie znaki są drukowane jako 98, 96, 100. W następnym kroku dla tych samych elementów konstrukcji używa się innego wystąpienia o nazwie „niepowodzenie”, aby wskazać te same elementy konstrukcji różnymi znakami. Następnie wyniki są teraz drukowane jako 34, 42, 13. To jasno wyjaśnia, że struktury będą miały kopię zmiennych składowych, a następnie przekażą składowe do swoich przyszłych bloków funkcyjnych.