Swift-ingatlan

hirdetések

a Swift 4 nyelv tulajdonságokat biztosít az osztályhoz, a felsoroláshoz vagy a struktúrához az értékek társításához. A tulajdonságok tovább osztályozhatók tárolt tulajdonságokba és számított tulajdonságokba.

a tárolt tulajdonságok és a számított tulajdonságok közötti különbség

tárolt tulajdonság számított tulajdonság
állandó és változó értékek tárolása példányként érték kiszámítása az érték tárolása helyett
osztályok és struktúrák szerint osztályok, Felsorolások és struktúrák szerint

mind a tárolt, mind a számított tulajdonságok társítva vannak a példányok típusához. Ha a tulajdonságok társítva vannak a típus értékeivel, akkor a típus tulajdonságai. A tárolt és számított tulajdonságokat általában egy adott típusú példányokhoz társítják. A tulajdonságok azonban magához a típushoz is társíthatók. Az ilyen tulajdonságokat típustulajdonságoknak nevezzük. A

  • tulajdonságmegfigyelőket a
  • tárolt tulajdonságok értékének megfigyelésére is használják
  • a

tárolt tulajdonságok tulajdonságának megfigyelésére

a Swift 4 bevezeti a tárolt tulajdonság fogalmát az állandók és változók példányainak tárolására. Az állandók tárolt tulajdonságait a ‘let’ kulcsszó, a változók tárolt tulajdonságait pedig a ‘var’ kulcsszó határozza meg.

  • definíció alatt a tárolt tulajdonság ‘alapértelmezett érték’
  • az inicializálás során a felhasználó inicializálhatja és módosíthatja a kezdeti értékeket
struct Number { var digits: Int let pi = 3.1415}var n = Number(digits: 12345)n.digits = 67print("\(n.digits)")print("\(n.pi)")

amikor a fenti programot játszótérrel futtatjuk, a következő eredményt kapjuk−

673.1415

vegye figyelembe a fenti kód következő sorát−

let pi = 3.1415

itt a PI változó tárolt tulajdonságértékként inicializálódik a PI = 3.1415 példával. Tehát, amikor a példányt utalják, csak a 3.1415 értéket fogja tartani.

egy másik módszer, hogy a tárolt tulajdonság, hogy a konstans struktúrák. Tehát a struktúrák teljes példánya az állandók tárolt tulajdonságainak tekinthető.

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

amikor a fenti programot a playground segítségével futtatjuk, a következő eredményt kapjuk−

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

ahelyett, hogy újra inicializálná a’ számot ‘8.7-re, hibaüzenetet ad vissza, amely jelzi, hogy a’ szám ‘ állandónak van nyilvánítva.

Lazy Stored Property

a Swift 4 rugalmas tulajdonságot biztosít, amelyet Lazy Stored Property-nek hívnak, ahol a változó első inicializálásakor nem számítja ki a kezdeti értékeket. a ‘lazy’ módosítót a változó deklarációja előtt használják, hogy lusta tárolt tulajdonságként legyen.

lusta tulajdonságokat használnak−

  • az objektum létrehozásának késleltetése.
  • ha a tulajdonság egy osztály más részeitől függ, amelyek még nem ismertek
class sample { lazy var no = number() // `var` declaration is required.}class number { var name = "Swift 4"}var firstsample = sample()print(firstsample.no.name)

amikor a fenti programot játszótérrel futtatjuk, a következő eredményt kapjuk−

Swift 4

Példányváltozók

a C objektívben a tárolt tulajdonságoknak vannak példányváltozói is biztonsági mentés céljából a tárolt tulajdonságban deklarált értékek tárolására.

a Swift 4 mindkét fogalmat egyetlen ‘tárolt tulajdonság’ deklarációba integrálja. A megfelelő példányváltozó és biztonsági másolat érték helyett a ‘tárolt tulajdonság’ tartalmazza az összes integrált információt, amelyet egyetlen helyen definiálnak a változók tulajdonságáról változó neve, adattípusa és memóriakezelési funkciói szerint.

számított tulajdonságok

az értékek tárolása helyett a számított tulajdonságok egy gettert és egy opcionális szettert biztosítanak más tulajdonságok és értékek közvetett lekéréséhez és beállításához.

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)

amikor a fenti programot a playground segítségével futtatjuk, a következő eredményt kapjuk−

(150.0, 75.0)-150.0-65.0

ha egy számított tulajdonság az új értéket meghatározatlanként hagyta, akkor az adott változó alapértelmezett értéke lesz beállítva.

számított tulajdonságok csak olvasható tulajdonságként

a számított tulajdonság csak olvasható tulajdonsága getterrel rendelkező, de szetter nélküli tulajdonság. Mindig értéket ad vissza. A változók tovább érhetők el a’.’Szintaxis, de nem állítható be más értékre.

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!)

amikor a fenti programot játszótérrel futtatjuk, a következő eredményt kapjuk−

Swift 4 Properties3.09

számított tulajdonságok mint Tulajdonságmegfigyelők

a Swift 4-ben a tulajdonságértékek megfigyelésére és megválaszolására a Tulajdonságmegfigyelőket használják. Minden egyes alkalommal, amikor a tulajdonságértékek beállítása tulajdonság megfigyelők hívják. A lusta tárolt tulajdonságok kivételével tulajdonságmegfigyelőket adhatunk az ‘örökölt’ tulajdonsághoz a ‘felülbíráló’ módszerrel.

a Tulajdonságmegfigyelők bármelyikével meghatározhatók

  • az érték tárolása előtt-willset

  • az új érték tárolása után – didset

  • ha egy tulajdonság be van állítva egy inicializáló willset és didset megfigyelők nem hívható.

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

amikor a fenti programot játszótérrel futtatjuk, a következő eredményt kapjuk−

Total Counter is: 100Newly Added Counter 100Total Counter is: 800Newly Added Counter 700

lokális és globális változók

lokális és globális változókat deklarálnak a tulajdonságok kiszámításához és megfigyeléséhez.

helyi változók globális változók
a függvényen belül definiált változók, módszer, vagy bezárási kontextus. függvényen, metóduson, lezáráson vagy szövegkörnyezeten kívül definiált változók.
értékek tárolására és lekérésére szolgál. értékek tárolására és lekérésére szolgál.
a tárolt tulajdonságok az értékek lekérésére és beállítására szolgálnak. a tárolt tulajdonságok az értékek lekérésére és beállítására szolgálnak.
számított tulajdonságokat is használnak. számított tulajdonságokat is használnak.

Típus tulajdonságok

a tulajdonságokat a típusdefiníció szakasz határozza meg göndör zárójelekkel {} és a változók hatóköre is meg van határozva korábban. Az értéktípusok típustulajdonságainak meghatározásához a ‘statikus’ kulcsszót, az osztálytípusokhoz pedig az ‘osztály’ kulcsszót használjuk.

szintaxis

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

lekérdezési és beállítási tulajdonságok

csakúgy, mint a példánytulajdonságok típustulajdonságai lekérdezhetők és ‘ – Val állíthatók be.’Szintaxis csak a típuson, ahelyett, hogy a példányra mutatna.

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)

amikor a fenti programot játszótérrel futtatjuk, a következő eredményt kapjuk −