Swift-Properties

advertises

Swift 4 kieli tarjoaa ominaisuuksia luokan, lukumäärän tai rakenteen liittää arvoja. Ominaisuudet voidaan edelleen luokitella tallennettuihin ominaisuuksiin ja laskennallisiin ominaisuuksiin.

tallennettujen ja laskettujen ominaisuuksien ero

varastoitu omaisuus laskennallinen omaisuus
säilytä vakio-ja muuttuva-arvot ilmentymänä laske arvo sen sijaan, että varastoisit arvon
tarjoaja: luokat ja rakenteet tarjoaja: luokat, luokat ja rakenteet

sekä tallennetut että lasketut ominaisuudet liittyvät instanssityyppiin. Kun ominaisuudet liittyvät sen tyyppiarvoihin, se määritellään ”Tyyppiominaisuuksiksi”. Tallennetut ja lasketut ominaisuudet liittyvät yleensä tietyn tyyppisiin esiintymiin. Ominaisuudet voivat kuitenkin liittyä myös itse tyyppiin. Tällaisia ominaisuuksia kutsutaan tyyppiominaisuuksiksi. Kiinteistötarkkailijoita käytetään myös

  • tarkkailemaan varastoitujen ominaisuuksien arvoa
  • tarkkailemaan perityn alaluokan omaisuutta, joka on johdettu superluokasta

tallennetut ominaisuudet

Swift 4 esittelee varastoidun ominaisuuden käsitteen vakioiden ja muuttujien instanssien tallentamiseksi. Vakioiden tallennetut ominaisuudet määritellään ” let ”- avainsanalla ja muuttujien tallennetut ominaisuudet ” var ” – avainsanalla.

  • määritelmän aikana tallennettu ominaisuus antaa ”oletusarvon”
  • alustuksen aikana käyttäjä voi alustaa ja muuttaa alkuarvoja
struct Number { var digits: Int let pi = 3.1415}var n = Number(digits: 12345)n.digits = 67print("\(n.digits)")print("\(n.pi)")

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

673.1415

harkitse seuraavaa riviä yllä olevassa koodissa−

let pi = 3.1415

tässä muuttuja pi alustetaan tallennetun ominaisuuden arvoksi esiintymällä pi = 3.1415. Joten, aina kun esimerkiksi on tarkoitettu se pitää arvo 3.1415 yksin.

toinen tapa saada varastoitua omaisuutta on olla yhtä vakiomuotoisia rakenteita. Niinpä rakenteiden koko esiintymä katsotaan ”vakioiden Varastoiduiksi ominaisuuksiksi”.

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

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

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

sen sijaan, että ”numero” aloitettaisiin uudelleen 8.7: ään, se palauttaa virhesanoman, joka osoittaa, että ”Numero” on julistettu vakioksi.

Lazy Stored Property

Swift 4 tarjoaa joustavan ominaisuuden nimeltä ”Lazy Stored Property”, jossa se ei laske alkuarvoja, kun muuttuja alustetaan ensimmäistä kertaa. ”lazy” – modifieria käytetään ennen muuttujan ilmoitusta, jotta se olisi laiska tallennettu ominaisuus.

laiskoja ominaisuuksia käytetään−

  • viivästyttää objektin luomista.
  • kun ominaisuus on riippuvainen luokan muista osista, joita ei vielä tunneta
class sample { lazy var no = number() // `var` declaration is required.}class number { var name = "Swift 4"}var firstsample = sample()print(firstsample.no.name)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

Swift 4

instanssimuuttujat

tavoitteessa C tallennetuilla ominaisuuksilla on myös instanssimuuttujia varmuuskopiointitarkoituksiin tallennettuun ominaisuuteen ilmoitettujen arvojen tallentamiseksi.

Swift 4 yhdistää nämä molemmat käsitteet yhdeksi ”tallennettua omaisuutta” koskevaksi ilmoitukseksi. Vastaavan instanssimuuttujan ja varmuuskopiointiarvon sijasta ”tallennettu ominaisuus” sisältää kaikki integroidut tiedot, jotka on määritelty yhdessä paikassa muuttujien ominaisuuksista muuttujan nimen, tietotyypin ja muistinhallintatoimintojen mukaan.

Laskennalliset ominaisuudet

sen sijaan, että lasketut arvot tallennettaisiin, saadaan getteri ja valinnainen setteri hakemaan ja asettamaan muita ominaisuuksia ja arvoja epäsuorasti.

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)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

(150.0, 75.0)-150.0-65.0

kun laskennallinen ominaisuus jättää uuden arvon määrittelemättömäksi, oletusarvo asetetaan kyseiselle muuttujalle.

Computed Properties as Read-Only Properties

a read-only property in computed property is defined as a property with getter but no setter. Sitä käytetään aina arvon palauttamiseen. Muuttujat ovat edelleen saatavilla kautta ”.’Syntaksi, mutta sitä ei voi asettaa toiselle arvolle.

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

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

Swift 4 Properties3.09

Computed Properties as Property Observers

In Swift 4 to observe and response to property Observers are used. Joka kerta, kun kiinteistön arvot on asetettu kiinteistötarkkailijoita kutsutaan. Laiskoja varastoituja ominaisuuksia lukuun ottamatta voimme lisätä omaisuuden tarkkailijoita ”perittyyn” omaisuuteen menetelmällä ”ohittaen”.

Omaisuudenhavaitsijat voidaan määritellä joko

  • ennen arvon tallentamista-willset

  • uuden arvon tallentamisen jälkeen-didset

  • kun ominaisuus on asetettu initializer willset ja didset tarkkailijoita ei voida kutsua.

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

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

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

ominaisuuksien laskemista ja havainnointia varten ilmoitetaan Paikalliset ja globaalit muuttujat

Paikalliset ja globaalit muuttujat.

paikalliset muuttujat globaalit muuttujat
muuttujat, jotka on määritelty funktion, menetelmän tai sulkemiskontekstin puitteissa. muuttujat, jotka on määritelty funktion, menetelmän, päätteen tai tyyppiyhteyden ulkopuolella.
käytetään arvojen tallentamiseen ja hakemiseen. käytetään arvojen säilyttämiseen ja hakemiseen.
tallennettuja ominaisuuksia käytetään arvojen saamiseen ja asettamiseen. tallennettuja ominaisuuksia käytetään arvojen saamiseen ja asettamiseen.
myös laskennallisia ominaisuuksia käytetään. laskennallisia ominaisuuksia käytetään myös.

tyypin ominaisuudet

ominaisuudet on määritelty tyypin määrittely-osiossa kihara-henkseleillä {} ja muuttujien laajuus on määritelty myös aiemmin. Tyyppiominaisuuksien määrittelyyn arvotyypeille käytetään ”staattista” avainsanaa ja luokkatyypeille ”luokkakelpoista” avainsanaa.

syntaksi

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

Kyselyominaisuudet ja Asetusominaisuudet

aivan kuten instanssiominaisuustyypin ominaisuudet ovat kyselyjä ja asetettuja”.’Syntaksi vain tyypin yksin sen sijaan, että osoittaisi ilmentymän.

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)

kun suoritamme edellä mainitun ohjelman playground −ohjelmalla, saamme seuraavan tuloksen –