Swift – Vlastnosti

Reklamy

Swift 4 jazyk poskytuje vlastnosti pro třídy, výčtu či struktury spojit hodnoty. Vlastnosti lze dále rozdělit na uložené vlastnosti a vypočtené vlastnosti.

Rozdíl mezi Uloženy Vlastnosti a Počítačová Vlastnosti

Uloženou Vlastnost Počítačová Majetku
Store konstantní a proměnné hodnoty jako instance Vypočítat hodnotu, spíše než ukládání hodnoty
Poskytnuté tříd a struktur Poskytována tříd, výčtů a struktur

Obě Uložené a Vypočtené vlastnosti jsou spojeny s instancí typu. Pokud jsou vlastnosti přidruženy k hodnotám typu, pak jsou definovány jako „Vlastnosti typu“. Uložené a vypočtené vlastnosti jsou obvykle spojeny s instancemi určitého typu. Vlastnosti však mohou být také spojeny se samotným typem. Takové vlastnosti jsou známé jako vlastnosti typu. Majetek pozorovatelé jsou také používány

  • pozorovat hodnoty uložené vlastnosti
  • pozorovat majetek zdědil podtřídy odvozen od nadtřídy

Uložené Vlastnosti

Swift 4 představuje Uloženou Vlastnost koncept pro ukládání instancí konstanty a proměnné. Uložené vlastnosti konstant jsou definovány klíčovým slovem “ let „a uložené vlastnosti proměnných jsou definovány klíčovým slovem „var“.

  • Při definici Uloženou vlastnost poskytuje ‚výchozí hodnota‘
  • Během Inicializace může uživatel inicializovat a změnit výchozí hodnoty
struct Number { var digits: Int let pi = 3.1415}var n = Number(digits: 12345)n.digits = 67print("\(n.digits)")print("\(n.pi)")

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

673.1415

Zvažte následující řádek v kódu výše−

let pi = 3.1415

Zde, proměnné pi je inicializován jako uložené hodnoty nemovitosti s instance pi = 3.1415. Takže kdykoli je instance odkazována, bude mít hodnotu 3.1415 sama.

dalším způsobem, jak mít uloženou vlastnost, je mít konstantní struktury. Takže celá instance struktur bude považována za „uložené vlastnosti konstant“.

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

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

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

Místo toho, zahájit „číslo“ na 8,7 vrátí chybová zpráva oznamující, že „číslo“ je deklarován jako konstantní.

Líný Uloženou Vlastnost

Swift 4 poskytuje flexibilní vlastnost s názvem ‚Líný Uloženou Vlastnost‘, kde to nebude výpočet počáteční hodnoty, když je proměnná inicializována poprvé. modifikátor ‚lazy‘ se používá před deklarací proměnné, aby byl jako lazy uložená vlastnost.

používají se Lazy vlastnosti−

  • zpoždění vytváření objektů.
  • Když vlastnost je závislá na jiné části třídy, které nejsou zatím známy
class sample { lazy var no = number() // `var` declaration is required.}class number { var name = "Swift 4"}var firstsample = sample()print(firstsample.no.name)

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

Swift 4

Proměnné Instance

V Objective C, Uložené vlastnosti mají také proměnné instance pro účely uložení hodnoty deklarované v uložené majetku.

Swift 4 integruje oba tyto pojmy do jediné deklarace „uložené vlastnosti“. Místo s odpovídající proměnnou instance a zpět hodnotu uložených vlastnost‘ obsahuje všechny integrované informace definované v jednom místě o vlastnosti proměnných tím, že proměnné název, typ dat a paměťové funkce řízení.

vypočtené vlastnosti

spíše než ukládání hodnot vypočtené vlastnosti poskytují getter a volitelný setr pro nepřímé načtení a nastavení dalších vlastností a hodnot.

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)

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

(150.0, 75.0)-150.0-65.0

Když vypočítaný ubytování vlevo nové hodnoty, jak je definován, je výchozí hodnota bude nastavena pro konkrétní proměnné.

Počítačová Vlastnosti Jen pro Čtení Vlastnosti

read-only vlastnost v počítačová majetek je definován jako majetek, s kariérista, ale bez setr. Vždy se používá k vrácení hodnoty. Proměnné jsou dále přístupné prostřednictvím ‚.’Syntaxe ale nemůže být nastavena na jinou hodnotu.

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

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

Swift 4 Properties3.09

Vypočtené Vlastnosti jako Majetek Pozorovatelé

V Swift 4 sledovat a reagovat na hodnoty vlastností Nemovitosti Pozorovatelé jsou používány. Pokaždé, když jsou nastaveny hodnoty vlastností, jsou voláni pozorovatelé vlastností. Kromě lazy uložené vlastnosti můžeme přidat vlastnost pozorovatele‘ zděděné ‚vlastnost metodou ‚přepsání‘.

Nemovitosti Pozorovatelé mohou být definovány buď

  • Před Uložením hodnoty – willset

  • Po Uložení nové hodnoty – didset

  • Když vlastnost je nastavena v inicializátoru willset a didset pozorovatelů nemůže být nazýván.

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

Když jsme se spustit výše uvedený program pomocí dětské hřiště, dostaneme následující výsledek−

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

Lokální a Globální Proměnné

Lokální a globální proměnné jsou deklarovány pro výpočetní a pozorování vlastnosti.

Lokální Proměnné Globální Proměnné
Proměnné, které jsou definované v rámci funkce, metoda, nebo uzavření kontextu. proměnné, které jsou definovány mimo kontext funkce, metody, uzavření nebo typu.
Používá se k ukládání a načítání hodnot. Používá se k ukládání a načítání hodnot.
uložené vlastnosti se používají k získání a nastavení hodnot. uložené vlastnosti se používají k získání a nastavení hodnot.
používají se také vypočtené vlastnosti. jsou také použity vypočtené vlastnosti.

Vlastnosti typu

vlastnosti jsou definovány v sekci Definice typu pomocí složených závorek {} a rozsah proměnných je také definován dříve. Pro definování vlastností typu pro typy hodnot se používá „statické“ Klíčové slovo a pro typy tříd „třída“ Klíčové slovo.

syntaxe

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

vlastnosti dotazování a nastavení

stejně jako vlastnosti typu instance jsou dotazovány a nastaveny pomocí‘.’Syntaxe jen na samotném typu místo toho, aby ukazovala na instanci.

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)

když spustíme výše uvedený program pomocí hřiště, získáme následující výsledek –