Swift-Egenskaper
Swift 4 språk gir egenskaper for klasse, opplisting eller struktur for å knytte verdier. Egenskaper kan videre klassifiseres I Lagrede egenskaper og Beregnede egenskaper.
Forskjell Mellom Lagrede Egenskaper og Beregnede Egenskaper
Lagret Eiendom | Beregnet Eiendom |
---|---|
Lagre konstante og variable verdier som forekomst | Beregn en verdi i stedet for å lagre verdien |
Levert av classes and structures | Levert av classes, enumerations and structures |
Både Lagrede og Beregnede egenskaper er knyttet til forekomsttype. Når egenskapene er knyttet til typeverdiene, er den definert som ‘Type Properties’. Lagrede og beregnede egenskaper er vanligvis knyttet til forekomster av en bestemt type. Egenskaper kan imidlertid også knyttes til selve typen. Slike egenskaper er kjent som type egenskaper. Egenskapsobservatører brukes også
- for å observere verdien av de lagrede egenskapene
- for å observere egenskapen til arvet underklasse avledet fra superklasse
Lagrede Egenskaper
Swift 4 introduserer Lagret Egenskapskonsept for å lagre forekomster av konstanter og variabler. Lagrede egenskaper for konstanter er definert av ‘ la ‘- søkeordet og Lagrede egenskaper for variabler er definert av’ var ‘ – søkeordet.
- Under definisjon Lagret egenskap gir ‘standardverdi’
- under Initialisering brukeren kan initialisere og endre de opprinnelige verdiene
struct Number { var digits: Int let pi = 3.1415}var n = Number(digits: 12345)n.digits = 67print("\(n.digits)")print("\(n.pi)")
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
673.1415
Vurder følgende linje i koden ovenfor−
let pi = 3.1415
her initialiseres variabelen pi som en lagret egenskapsverdi med forekomsten pi = 3.1415. Så, når forekomsten er referert, vil den holde verdien 3.1415 alene.
En annen metode for å ha lagret egenskap er å ha som konstante strukturer. Så hele forekomsten av strukturene vil bli vurdert som ‘Lagrede Egenskaper Av Konstanter’.
struct Number { var digits: Int let numbers = 3.1415}var n = Number(digits: 12345)n.digits = 67print("\(n.digits)")print("\(n.numbers)")n.numbers = 8.7
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
error: cannot assign to 'numbers' in 'n'n.numbers = 8.7
I Stedet for å initialisere ‘tallet’ til 8.7 vil det returnere en feilmelding som indikerer at ‘tallet’ er erklært som konstant.
Lat Lagret Egenskap
Swift 4 gir en fleksibel egenskap kalt ‘Lat Lagret Egenskap’ der den ikke beregner startverdiene når variabelen initialiseres for første gang. ‘lazy’ modifikator brukes før variabeldeklarasjonen for å få den som en lat lagret egenskap.
Lat Egenskaper brukes−
- å forsinke objektopprettelse.
- når egenskapen er avhengig av andre deler av en klasse, som ikke er kjent ennå
class sample { lazy var no = number() // `var` declaration is required.}class number { var name = "Swift 4"}var firstsample = sample()print(firstsample.no.name)
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
Swift 4
Instansvariabler
I Mål C Har Lagrede egenskaper også instansvariabler for sikkerhetskopieringsformål for å lagre verdiene deklarert i lagret egenskap.
Swift 4 integrerer begge disse begrepene i en enkelt ‘lagret egenskap’ erklæring. I stedet for å ha en tilsvarende instansvariabel og sikkerhetskopiere verdien ‘lagret egenskap’ inneholder all integrert informasjon definert på ett sted om variabelegenskapen etter variabelnavn, datatype og minnehåndteringsfunksjoner.
Beregnede Egenskaper
i Stedet for å lagre verdiene beregnede egenskaper gir en getter og en valgfri setter for å hente og angi andre egenskaper og verdier indirekte.
class sample { var no1 = 0.0, no2 = 0.0 var length = 300.0, breadth = 150.0 var middle: (Double, Double) { get { return (length / 2, breadth / 2) } set(axis){ no1 = axis.0 - (length / 2) no2 = axis.1 - (breadth / 2) } }}var result = sample()print(result.middle)result.middle = (0.0, 10.0)print(result.no1)print(result.no2)
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
(150.0, 75.0)-150.0-65.0
når en beregnet egenskap forlot den nye verdien som udefinert, settes standardverdien for den aktuelle variabelen.
Beregnede Egenskaper Som Skrivebeskyttede Egenskaper
en skrivebeskyttet egenskap i beregnet egenskap er definert som en egenskap med getter, men ingen setter. Det brukes alltid til å returnere en verdi. Variablene er videre tilgjengelig gjennom a ‘. Syntaks, men kan ikke settes til en annen verdi.
class film { var head = "" var duration = 0.0 var metaInfo: { return }}var movie = film()movie.head = "Swift 4 Properties"movie.duration = 3.09print(movie.metaInfo!)print(movie.metaInfo!)
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
Swift 4 Properties3.09
Beregnede Egenskaper Som Eiendomsobservatører
I Swift 4 for å observere og svare på eiendomsverdier Brukes Eiendomsobservatører. Hver gang når eiendomsverdier er satt eiendom observatører kalles. Bortsett fra lat lagrede egenskaper kan vi legge til eiendom observatører til ‘arvet’ eiendom ved metoden ‘overordnet’.
Eiendomsobservatører kan defineres av enten
-
før Du Lagrer verdien-willset
-
Etter Lagring av den nye verdien-didset
-
når en egenskap er satt i en initializer willset og didset observatører kan ikke kalles.
class Samplepgm { var counter: Int = 0 { willSet(newTotal){ print("Total Counter is: \(newTotal)") } didSet { if counter > oldValue { print("Newly Added Counter \(counter - oldValue)") } } }}let NewCounter = Samplepgm()NewCounter.counter = 100NewCounter.counter = 800
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat−
Total Counter is: 100Newly Added Counter 100Total Counter is: 800Newly Added Counter 700
Lokale Og Globale Variabler
Lokal og global variabel er deklarert for å beregne og observere egenskapene.
Lokale Variabler | Globale Variabler |
---|---|
Variabler som er definert i en funksjon, metode eller lukkekontekst. | Variabler som er definert utenfor funksjon, metode, lukking eller type kontekst. |
Brukes til å lagre og hente verdier. | Brukes til å lagre og hente verdier. |
Lagrede egenskaper brukes til å få og angi verdiene. | Lagrede egenskaper brukes til å hente og angi verdiene. |
Beregnede egenskaper brukes også. | Beregnede egenskaper brukes også. |
Typeegenskaper
Egenskaper er definert i Delen Typedefinisjon med klammeparenteser {}, og omfanget av variablene er også definert tidligere. For å definere type egenskaper for verdityper ‘statisk’ søkeord brukes og for klasse typer ‘klasse’ søkeord brukes.
Syntaks
struct Structname { static var storedTypeProperty = " " static var computedTypeProperty: Int { // return an Int value here }}enum Enumname { static var storedTypeProperty = " " static var computedTypeProperty: Int { // return an Int value here }}class Classname { class var computedTypeProperty: Int { // return an Int value here }}
Egenskaper For Spørring Og Innstilling
Akkurat Som egenskaper For instansegenskaper Type egenskaper spørres og settes med ‘.’Syntaks bare på typen alene i stedet for å peke på forekomsten .
struct StudMarks { static let markCount = 97 static var totalCount = 0 var InternalMarks: Int = 0 { didSet { if InternalMarks > StudMarks.markCount { InternalMarks = StudMarks.markCount } if InternalMarks > StudMarks.totalCount { StudMarks.totalCount = InternalMarks } } }}var stud1Mark1 = StudMarks()var stud1Mark2 = StudMarks()stud1Mark1.InternalMarks = 98print(stud1Mark1.InternalMarks)stud1Mark2.InternalMarks = 87print(stud1Mark2.InternalMarks)
når vi kjører programmet ovenfor ved hjelp av lekeplass, får vi følgende resultat −