hurtig-egenskaber

annoncer

Hurtig 4 sprog giver egenskaber for klasse, optælling eller struktur til at knytte værdier. Egenskaber kan yderligere klassificeres i lagrede egenskaber og beregnede egenskaber.

forskel mellem lagrede egenskaber og beregnede egenskaber

gemt ejendom beregnet ejendom
Gem konstante og variable værdier som forekomst Beregn en værdi i stedet for at gemme værdien
leveret af klasser og strukturer leveret af klasser, optællinger og strukturer

både lagrede og beregnede egenskaber er forbundet med instanser type. Når egenskaberne er knyttet til dens typeværdier, defineres det som ‘typeegenskaber’. Lagrede og beregnede egenskaber er normalt forbundet med forekomster af en bestemt type. Egenskaber kan dog også være forbundet med selve typen. Sådanne egenskaber er kendt som typeegenskaber. Ejendomsobservatører bruges også

  • til at observere værdien af de lagrede egenskaber
  • til at observere egenskaben for arvet underklasse afledt af superklasse

lagrede egenskaber

Hurtig 4 introducerer lagret Ejendomskoncept til at gemme forekomster af konstanter og variabler. Lagrede egenskaber for konstanter defineres af’ lad ‘nøgleordet, og lagrede egenskaber for variabler defineres af’ var ‘ nøgleordet.

  • under definition lagrede ejendom giver’standardværdi’
  • under initialisering brugeren kan initialisere og ændre de oprindelige værdier
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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat−

673.1415

overvej følgende linje i ovenstående kode−

let pi = 3.1415

her initialiseres variablen pi som en gemt egenskabsværdi med forekomsten pi = 3.1415. Så når forekomsten henvises, vil den holde værdien 3.1415 alene.

en anden metode til at have lagret ejendom er at have som konstante strukturer. Så hele forekomsten af strukturer vil blive betragtet som ‘lagrede egenskaber af 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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat−

error: cannot assign to 'numbers' in 'n'n.numbers = 8.7

i stedet for at geninitialisere ‘nummeret’ til 8,7 returnerer det en fejlmeddelelse, der angiver, at ‘nummeret’ er erklæret som konstant.

doven gemt ejendom

Hurtig 4 giver en fleksibel egenskab kaldet ‘doven gemt ejendom’, hvor den ikke beregner de oprindelige værdier, når variablen initialiseres for første gang. ‘doven’ modifier bruges før variablen erklæring at have det som en doven gemt ejendom.

dovne egenskaber anvendes−

  • at forsinke objektoprettelse.
  • når ejendommen er afhængig af andre dele af en klasse, som endnu ikke er kendt
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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat−

Swift 4

instansvariabler

i Mål C har lagrede egenskaber også instansvariabler til sikkerhedskopieringsformål for at gemme de værdier, der er angivet i gemt egenskab.

Hurtig 4 integrerer begge disse begreber i en enkelt ‘lagret egenskab’ erklæring. I stedet for at have en tilsvarende instansvariabel og sikkerhedskopieringsværdi ‘gemt egenskab’ indeholder alle integrerede oplysninger defineret på et enkelt sted om variabelegenskaben efter variabelnavn, datatype og hukommelsesstyringsfunktionaliteter.

beregnede egenskaber

i stedet for at gemme værdierne beregnede egenskaber giver en getter og en valgfri setter til at hente og indstille andre egenskaber og værdier 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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat−

(150.0, 75.0)-150.0-65.0

når en beregnet egenskab efterlod den nye værdi som udefineret, indstilles standardværdien for den pågældende variabel.

beregnede egenskaber som skrivebeskyttede egenskaber

en skrivebeskyttet ejendom i beregnet ejendom defineres som en ejendom med getter, men ingen setter. Det bruges altid til at returnere en værdi. Variablerne er yderligere tilgængelige via en’. Syntaks men kan ikke indstilles til en anden værdi.

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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat−

Swift 4 Properties3.09

beregnede egenskaber som Ejendomsobservatører

i Hurtig 4 til at observere og reagere på ejendomsværdier Egenskabsobservatører bruges. Hver gang, når ejendomsværdier er indstillet, kaldes ejendomsobservatører. Bortset fra dovne lagrede egenskaber kan vi tilføje ejendomsobservatører til’ arvet ‘ejendom efter metode’overordnet’.

Ejendomsobservatører kan defineres af enten

  • før du gemmer værdien

  • efter lagring af den nye værdi-didset

  • når en egenskab er angivet i en initialisator, kan observatører ikke kaldes.

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 kører ovenstående program ved hjælp af legeplads, 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 erklæres for beregning og observation af egenskaberne.

lokale variabler globale variabler
variabler, der er defineret inden for en funktion, metode eller lukningskontekst. variabler, der er defineret uden for funktion, metode, lukning eller type kontekst.
bruges til at gemme og hente værdier. bruges til at gemme og hente værdier.
lagrede egenskaber bruges til at hente og indstille værdierne. lagrede egenskaber bruges til at hente og indstille værdierne.
beregnede egenskaber anvendes også. beregnede egenskaber anvendes også.

typeegenskaber

egenskaber er defineret i afsnittet Typedefinition med krøllede seler {}, og omfanget af variablerne er også defineret tidligere. For at definere type egenskaber for værdityper ‘statisk’ søgeord bruges og for klasse typer ‘klasse’ søgeord bruges.

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 }}

forespørge-og Indstillingsegenskaber

ligesom egenskabsegenskaber forespørges og indstilles med ‘.’Syntaks bare på typen alene i stedet for at pege 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 kører ovenstående program ved hjælp af legeplads, får vi følgende resultat –