W swifcie, właściwości są używane do opisywania atrybutów obiektu i mogą to być stałe lub zmienne w klasach, strukturach lub wyliczeniach.
W swift właściwości są używane do przechowywania wartości dla klas, struktur lub wyliczeń i właściwości mają metody getter i setter do modyfikowania lub ustawiania wartości właściwości w oparciu o nasze wymagania.
- Swift Define a Property
- Swift Assign and Access Properties
- Właściwości przechowywane w swift
- Stored Properties for Constant Structure Instances
- Swift Lazy Stored Properties
- Właściwości obliczeniowe Swift
- Swift Read-Only Computed Properties
- Swift Property Observer
- Właściwości typu swift
- Swift Odpytywanie i ustawianie właściwości typu
Swift Define a Property
Poniżej znajduje się prosty przykład tworzenia klasy z właściwościami w języku programowania swift.
class UserDetails {
var firstName: String = „”
var LastName: String = „”
}
Jeśli obserwujesz powyższy przykład zdefiniowaliśmy klasę „UserDetails” z dwoma właściwościami (firstName, lastName).
Swift Assign and Access Properties
Poniżej znajduje się przykład deklarowania i przypisywania wartości do zdefiniowanych właściwości w klasie.
class UserDetails {
var firstName: String = „”
var LastName: String = „”
}
var uinfo = UserDetails()
uinfo.firstName = „Suresh”
uinfo.lastName = „Dasari”
print(„Name: \( uinfo.firstName) \(uinfo.lastName)”)
Jeśli obserwujesz powyższy przykład, zdefiniowaliśmy dwie właściwości „firstName”, „lastName” i te wartości są związane z klasą „UserDetails”. Po tym utworzyliśmy instancję dla tej klasy i uzyskaliśmy dostęp do właściwości wewnątrz klasy aby przypisać wartości oparte na naszych wymaganiach.
Gdy uruchomimy powyższy program w swift playground otrzymamy wynik jak pokazano poniżej
W ten sam sposób możemy definiować i uzyskiwać dostęp do właściwości w strukturach i wyliczeniach w oparciu o nasze wymagania w języku programowania swift.
Mamy różne typy właściwości dostępne w języku programowania swift, które są
- Właściwości przechowywane
- Właściwości wyliczane
Właściwości przechowywane w swift
W swift właściwość przechowywana jest stałą lub zmienną i jest przechowywana jako część instancji określonej klasy lub struktury. Przechowywana właściwość może być używana do przechowywania zmiennej ze słowem kluczowym var
i stałej ze słowem kluczowym let
.
Możemy zapewnić wartości domyślne dla przechowywanych właściwości jako część ich definicji i możemy modyfikować wartości początkowe przechowywanych właściwości podczas ich inicjalizacji.
Teraz zobaczymy jak definiować przechowywane właściwości w klasach i jak modyfikować wartości początkowe przechowywanych właściwości podczas ich inicjalizacji na przykładzie.
Poniżej znajduje się przykład definiowania przechowywanych właściwości jako część klasy lub struktury w języku programowania swift.
struct UserDetails {
var firstName: String = „Rohini”
let lastName: String
}
var uinfo = UserDetails(firstName: „Suresh”, lastName: ” Dasari”)
print(„Name: \( uinfo.firstName) \(uinfo.lastName)”)
Jeśli obserwujesz powyższy przykład, zdefiniowaliśmy dwie przechowywane właściwości (firstName, lastName) jedną jako zmienną (var
) i drugą jako stałą (let
) z wartościami początkowymi. Po tym utworzyliśmy instancję struktury i zmodyfikowaliśmy wartości początkowe podczas jej inicjalizacji.
Gdy uruchomimy powyższy program w swift playground otrzymamy wynik jak pokazano poniżej
W ten sposób możemy zdefiniować przechowywane właściwości w klasach, strukturach, wyliczeniach w oparciu o nasze wymagania w języku programowania swift.
Stored Properties for Constant Structure Instances
W swift, możemy zdefiniować klasę lub strukturę z przechowywanymi właściwościami jako stałą. W przypadku, gdy zdefiniujemy stałą właściwość z wartością początkową, nie jest możliwe dla nas zmodyfikowanie tej wartości, ponieważ raz przypisana wartość do zmiennej stałej powinna być taka sama w całej aplikacji.
W przypadku, gdy spróbujemy zmodyfikować wartość stałej właściwości podczas jej inicjalizacji lub z instancją klasy, kompilator wyrzuci błąd.
Poniżej znajduje się przykład modyfikacji wartości stałej przechowywanej właściwości po zainicjalizowaniu wartości podczas tworzenia instancji klasy.
struct UserDetails {
var firstName: String = „Rohini”
let lastName: String
}
var uinfo = UserDetails(firstName: „Suresh”, lastName: ” Dasari”)
uinfo.lastName = „Alavala”
print(„Name: \( uinfo.firstName) \(uinfo.lastName)”)
Jeśli obserwujesz powyższy przykład, zdefiniowaliśmy stałą właściwość „lastName” i przypisaliśmy wartość do zmiennej podczas tworzenia instancji klasy. Po tym ponownie próbujemy zmodyfikować wartość zmiennej stałej.
Gdy spróbujemy uruchomić powyższy przykład w swift playground otrzymamy błąd jak pokazano poniżej
Error: cannot assign to property: 'lastName’ is a 'let’ constant
Gdy przypiszemy wartość do stałej właściwości, która powinna być taka sama w całej aplikacji w przeciwnym razie wyrzuci błąd. Aby uzyskać więcej informacji na temat stałych sprawdź to Swift Constants.
Swift Lazy Stored Properties
W swifcie lazy stored property jest właściwością, której początkowa wartość nie jest ładowana aż do pierwszego użycia wartości właściwości. W swifcie, możemy zdefiniować leniwie przechowywaną właściwość poprzez użycie słowa kluczowego lazy
przed jej deklaracją.
W swifcie leniwie przechowywane właściwości są użyteczne, gdy początkowa wartość właściwości nie musi być ładowana do momentu jej użycia w aplikacji. Załóżmy, że mamy jedną właściwość i musimy wykonać kilka skomplikowanych operacji, aby załadować lub zainicjować wartość, ale jest ona wymagana tylko w określonych miejscach w tym przypadku, jeśli używamy leniwie przechowywanych właściwości te wartości nie będą ładowane, dopóki nie użyjemy ich w naszym kodzie.
Teraz zobaczymy jak używać leniwie przechowywanych właściwości w aplikacjach swift z przykładami.
Poniżej znajduje się przykład użycia leniwie przechowywanych właściwości w języku programowania swift.
class Student {
var name: String
lazy var studentInfo: String = {
return „Welcome to Tutlane, \(self.name)!”
}()
init(name: String) {
self.name = name
}
}
let stu = Student(name: „Suresh”)
print(stu.studentInfo)
Jeśli obserwujesz powyższy przykład zdefiniowaliśmy przechowywaną leniwie właściwość „studentInfo” używając słowa kluczowego lazy
. Wartość tej właściwości nie zostanie załadowana dopóki instrukcja print nie wywoła właściwości z instancji klasy student.
Gdy uruchomimy powyższy program w swift playground otrzymamy wynik jak poniżej
To jest jak możemy używać leniwie przechowywanych właściwości w języku programowania swift w oparciu o nasze wymagania.
Tutaj musimy pamiętać, że zawsze musimy zadeklarować leniwie przechowywane właściwości jako zmienne (var), ponieważ ich wartość nie jest pobierana do momentu zakończenia inicjalizacji instancji, ale dla stałych (let) właściwości muszą mieć wartość przed zakończeniem inicjalizacji, to jest powód, dla którego zawsze musimy zdefiniować leniwe właściwości jako zmienne.
Właściwości obliczeniowe Swift
W Swift w przeciwieństwie do właściwości przechowywanych, właściwości obliczeniowe nie będą przechowywać wartości, zamiast tego właściwości obliczeniowe będą dostarczać getter i opcjonalny setter do pobierania i ustawiania wartości innych właściwości pośrednio. Możemy definiować właściwości obliczeniowe w klasach, strukturach i wyliczeniach w oparciu o nasze wymagania.
Poniżej znajduje się przykład definiowania właściwości obliczeniowych przy użyciu gettera i setera do ustawiania wartości w języku programowania swift.
class Circle {
var radius : Double?
var cval : Double?
var Area: Double {
get {
return radius! * radius!
}
set (newArea){
cval = Double(newArea) * 3.14
}
}
}
let result = Circle()
result.Area = 20
print(result.cval)
Jeśli obserwujesz powyższy przykład, ustawiamy nową wartość dla właściwości „Area” używając właściwości getter i setter.
Gdy uruchomimy powyższy program w swift playground, otrzymamy wynik jak pokazano poniżej
W ten sposób możemy używać właściwości obliczeniowych w języku programowania swift do używania wartości bez przechowywania w oparciu o nasze wymagania.
Swift Read-Only Computed Properties
Właściwość obliczeniowa z tylko getterem, ale bez settera jest znana jako właściwość obliczeniowa tylko do odczytu. W swifcie możemy uzyskać dostęp do właściwości tylko do odczytu poprzez składnię kropka (.) i zawsze zwraca ona wartość.
Poniżej znajduje się przykład użycia właściwości tylko do odczytu w języku programowania swift.
class Multiplication {
var num1 : Int = 5
var num2 : Int = 5
var multiply: Int {
get {
return num1 * num2
}
}
}
let r = Multiplication()
print(r.multiply)
W powyższym przykładzie zdefiniowaliśmy w klasie dwie właściwości z wartościami domyślnymi oraz mnożenie tych dwóch liczb za pomocą gettera. Następnie stworzyliśmy instancję klasy i uzyskaliśmy dostęp do wartości gettera używając składni kropki (.).
Gdy uruchomimy powyższy program w swift playground otrzymamy wynik jak pokazano poniżej
To jest jak możemy użyć tylko do odczytu obliczonych właściwości aby ustawić wartości używając właściwości gettera w języku programowania swift.
Swift Property Observer
W swift obserwatory właściwości są używane do obserwowania i reagowania na zmiany wartości właściwości i te obserwatory właściwości będą wywoływane za każdym razem, gdy wartość właściwości się zmieni, nawet jeśli nowa wartość właściwości jest taka sama jak bieżąca wartość właściwości.
W swift, zmiany we właściwościach mogą być obserwowane za pomocą następujących dwóch obserwatorów.
- willSet – Ten obserwator jest wywoływany tuż przed zapisaniem wartości.
- didSet – Jest to obserwator wywoływany po zapisaniu nowej wartości.
W swift, możemy używać obserwatorów właściwości w dowolnych przechowywanych właściwościach, z wyjątkiem leniwych przechowywanych właściwości.
Poniżej znajduje się przykład użycia właściwości willSet i didSet w języku programowania swift.
klasa Zmiany {
var num1: Int = 10 {
willSet(newvalue) {
print(„Wartość \(newvalue)”)
}
didSet {
if num1 > oldValue {
print(„Dodano \(num1 -. oldValue)”)
}
}
}
}
let result = Changes()
result.num1 = 34
result.num1 = 987
Jeśli obserwujesz powyższy przykład, użyliśmy obserwatorów willSet i didSet i te właściwości są wywoływane za każdym razem, gdy wartość właściwości ulega zmianie.
Gdy uruchomimy powyższy program w swift playground otrzymamy wynik jak pokazano poniżej
Wartość 34
Dodana 24
Wartość 987
Dodana 953
Właściwości typu swift
W swift, właściwości instancji są związane z instancją klasy lub struktury, właściwości typu są związane z samym typem, nie należą do żadnej instancji typu.
W swifcie, możemy zdefiniować właściwość typu za pomocą słowa kluczowego static i dla obliczonych właściwości typu, a dla typów klas musimy użyć słowa kluczowego class
, ale nie pozwoli to na nadpisanie metod lub zmiennych nadklasy.
Poniżej znajduje się przykład użycia właściwości typu w języku programowania swift.
struct typepro {
static let msg = „Welcome to Tutlane”
}
class Class1 {
func test() { print(typepro.msg) }
}
class Class2 {
func test() { print(typepro.msg) }
}
var ss = Class1()
ss.test()
Jeśli obserwujesz powyższy przykład zdefiniowaliśmy właściwość typu ze słowem kluczowym static i dostęp do wartości właściwości typu przez odniesienie do nazwy i przy użyciu składni kropki, aby uzyskać dostęp do wartości.
Gdy uruchomimy powyższy program w języku programowania swift otrzymamy wynik jak pokazano poniżej.
Swift Odpytywanie i ustawianie właściwości typu
W swifcie, właściwości typu są odpytywane i możemy następnie ustawić wartość za pomocą składni kropki (.) tak samo jak wtedy, gdy tworzymy instancję i przypisujemy wartości do właściwości. Jednakże, właściwości typu są wyszukiwane i ustawiają wartość właściwości na typ, a nie na instancję tego typu.
Poniżej znajduje się przykład użycia właściwości typu w języku programowania swift.
struct typerepo {
static var msg = „Welcome”
}
print(typerepo.msg)
typerepo.msg = „Welcome to Tutlane”
print(typerepo.msg)
Jeśli obserwujesz powyższy przykład, utworzyliśmy właściwość typu i ustawiliśmy wartość bezpośrednio poprzez użycie instancji tego typu.