Najlepszy samouczek Obiekt Swift W 2024 r. W tym samouczku możesz dowiedzieć się Właściwości Store,Opóźnienie Właściwości bagażu,Przykłady zmiennych,Właściwości obliczeniowe,Tylko do odczytu obliczenia atrybutu,nieruchomość Obserwator,Zmienne globalne i lokalne,Typ nieruchomości,Pobierz i ustawić wartość typu własności,
Swift wartość nieruchomości o określonej klasy, struktury lub stowarzyszenia wyliczenia.
Nieruchomość można podzielić na właściwości magazynowania i oblicza właściwości:
Właściwości Store | Właściwości obliczeniowe |
---|---|
Jako przykład stałej lub zmiennej części magazynowej | Obliczono (zamiast przechowywania) wartość |
Dla klas i struktur | Dla klas, struktur i wyliczenia |
właściwości przechowywania i właściwości są powszechnie stosowane do obliczania wystąpień danego typu.
Właściwości mogą być również stosowane bezpośrednio samego typu, ta właściwość jest nazywany atrybut type.
Alternatywnie, można zdefiniować właściwości obserwatora do monitorowania zmian wartości nieruchomości, w celu uruchomienia operacji niestandardowej. Widz Atrybut może być dodawany do tworzenia własnych atrybut pamięci mogą być dodawane do właściwości odziedziczonych z klasy nadrzędnej.
W prostych słowach, atrybut pamięci stałej lub zmiennej przechowywane w instancji danej klasy lub struktury wewnętrznej.
Obiekt bagażu może być zmienną atrybuty przechowywania (zdefiniowane przez var keyword), może to być również stałe atrybuty przechowywania (zdefiniowane przez kluczowych let).
Można określić wartość domyślną w nieruchomości, gdy są przechowywane definicje
Można również ustawić lub zmodyfikować przechowywaną wartość nieruchomości w trakcie budowy, a nawet zmienić wartość stałej własności magazynowania
import Cocoa struct Number { var digits: Int let pi = 3.1415 } var n = Number(digits: 12345) n.digits = 67 print("\(n.digits)") print("\(n.pi)")
Wyjście powyżej wykonywanie programu jest:
67 3.1415
Rozważmy następujący kod:
let pi = 3.1415
Kod pi określić domyślne wartości przechowywanych w atrybucie definicji kiedy (pi = 3,1415), więc nie ma znaczenia, jeśli wystąpienia struktury, nie ulegnie zmianie.
Jeśli zdefiniujemy stałą właściwość pamięci, będzie narzekać, jeśli starają się zmodyfikować w następujący sposób:
import Cocoa struct Number { var digits: Int let numbers = 3.1415 } var n = Number(digits: 12345) n.digits = 67 print("\(n.digits)") print("\(n.numbers)") n.numbers = 8.7
Powyższy błąd wykonywania programu, błąd jest następujący:
error: cannot assign to property: 'numbers' is a 'let' constant n.numbers = 8.7
Znaczenie "Liczby" jest stała, nie można go zmodyfikować.
atrybutem Pamięć Delay odnosi się po raz pierwszy, gdy nieruchomość jest nazywany jego wartość początkowa zostanie obliczona.
Przed użyciem deklaracji atrybutuleniwy, aby wskazać właściwości przechowywać zwłoki.
Uwaga:
Obiekt opóźnienia bagażu należy zgłosić jako zmienną (używającvar
keyword), ponieważ wartość nieruchomości nie może być zakończone przed konstruktora instancji. Stała nieruchomości przed rozpoczęciem budowy jest kompletna musi mieć wartość początkową, a zatem nie może zostać uznane za opóźnione nieruchomości.
Właściwości opóźnienia bagażu są powszechnie stosowane:
Opóźnia tworzenie obiektów.
Gdy wartość właściwości zależy od innych nieznanych klasie
import Cocoa class sample { lazy var no = number() // `var` 关键字是必须的 } class number { var name = "w3big Swift 教程" } var firstsample = sample() print(firstsample.no.name)
Wyjście powyżej wykonywanie programu jest:
w3big Swift 教程
Jeśli mieli doświadczenie w Objective-C, należy wiedzieć, Objective-C wartość przechowywania instancji klasy i odniesienie oferuje dwie metody. Dla właściwości, może być również stosowany jako zmienne np backend do przechowywania wartości właściwości.
Swift język programowania do korzystania z tych teorii do uzyskania własności ujednolicony. Swift nie przypisuje odpowiednie zmienne instancji, właściwości przechowywania back-end nie mogą być bezpośrednio dostępne. W ten sposób unika się problemów związanych z metodami dostępu w różnych sytuacjach, ale również w celu uproszczenia określenie właściwości jako oświadczenia.
Wszystkie informacje w rodzaju nieruchomości - w tym nazwę, typ i funkcje zarządzania pamięcią - wszystko w wyjątkowym miejscu (definicja typu) definicji.
Oprócz atrybutów przechowywania, kategorie, struktur i wyliczeń można zdefiniować do obliczenia wartości nieruchomości obliczone atrybut nie są przechowywane bezpośrednio, ale w celu zapewnienia getter, aby uzyskać wartość opcjonalnym układem nastawczym, aby ustawić wartości innych własności lub zmiennych pośrednich.
import Cocoa 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)
Wyjście powyżej wykonywanie programu jest:
(150.0, 75.0) -150.0 -65.0
Jeśli obliczona seter nieruchomość nie definiuje nazwę parametru reprezentuje nową wartość, można użyć domyślnej nazwy nowaWartość.
Tylko nie Getter obliczona ustawiająca właściwość jest tylko do odczytu obliczeń atrybutów.
Tylko do odczytu Właściwość zawsze zwraca wartość obliczoną, (.), Aby uzyskać dostęp do Operatora za pośrednictwem punktu, ale nie można ustawić nową wartość.
import Cocoa class film { var head = "" var duration = 0.0 var metaInfo: [String:String] { return [ "head": self.head, "duration":"\(self.duration)" ] } } var movie = film() movie.head = "Swift 属性" movie.duration = 3.09 print(movie.metaInfo["head"]!) print(movie.metaInfo["duration"]!)
Wyjście powyżej wykonywanie programu jest:
Swift 属性 3.09
Uwaga:
Należy użyć
var
słowo kluczowe aby zdefiniować atrybuty obliczeniowe, w tym tylko do odczytu atrybutów obliczeń, ponieważ ich wartość nie jest stała.let
parametr jest używany tylko zadeklarować stałą cechę, która nie może zostać zmodyfikowany po wartości inicjalizacji.
Zmień atrybut widza do monitorowania odpowiedzi na wartości nieruchomości każda właściwość jest ustawiona, gdy wartość nieruchomości zostanie wezwany do obserwacji, a nawet nowa wartość oraz wartość bieżąca tym samym czasie nie jest wyjątkiem.
Możesz dodać właściwości do widza oprócz pamięci opóźnienia przypisania innych niż nieruchomości magazynowych można również dodać atrybuty obserwatora na odziedziczonej nieruchomości (w tym składowania i obliczania atrybutów własności) nadrzędnymi sposoby atrybutów.
Uwaga:
Nie ma potrzeby, aby dodać obiekt obserwatora do obliczenia właściwości nie może być przeciążona, ponieważ można bezpośrednio monitorować i reagować na zmiany wartości seter.
Możesz dodać jedną lub wszystkie z poniższych obserwatora nieruchomości:
willSet
przed ustawieniem nowego połączenia wartości didSet
po nowa wartość jest ustawiona zadzwonić od razu import Cocoa class Samplepgm { var counter: Int = 0{ willSet(newTotal){ print("计数器: \(newTotal)") } didSet{ if counter > oldValue { print("新增数 \(counter - oldValue)") } } } } let NewCounter = Samplepgm() NewCounter.counter = 100 NewCounter.counter = 800
Wyjście powyżej wykonywanie programu jest:
计数器: 100 新增数 100 计数器: 800 新增数 700
Obliczanie i atrybuty trybu obserwatora opisane mogą być również wykorzystywane do zmiennych globalnych i lokalnych.
zmienne lokalne | Zmienne globalne |
---|---|
W funkcji, metody lub zamknięciami wewnętrznymi zdefiniowane zmienne. | Zmienna poza funkcją, metodzie lub dowolnego rodzaju definicji zamknięcia. |
Do przechowywania i odczytu wartości. | Do przechowywania i odczytu wartości. |
Obiekt bagażu, aby uzyskać i ustawić wartość. | Obiekt bagażu, aby uzyskać i ustawić wartość. |
Stosowany również do obliczenia właściwości. | Stosowany również do obliczenia właściwości. |
Atrybut type jest zdefiniowany jako część typu w rodzaju pisanie peryferyjnych nawiasów klamrowych ({}) wewnątrz.
Użyj słowa kluczowego static zdefiniować typ wartości atrybutu typu, klasy słów kluczowych, aby zdefiniować atrybut type klasy.
struct Structname { static var storedTypeProperty = " " static var computedTypeProperty: Int { // 这里返回一个 Int 值 } } enum Enumname { static var storedTypeProperty = " " static var computedTypeProperty: Int { // 这里返回一个 Int 值 } } class Classname { class var computedTypeProperty: Int { // 这里返回一个 Int 值 } }
Uwaga:
Computational Przykładem atrybutu type jest tylko do odczytu, ale można również zdefiniować obliczeniową do odczytu i zapisu składni atrybutu typu podobną kalkulację z atrybutem instancji.
Przykłady podobnych właściwościach, rodzaj dostępu do nieruchomości prowadzona jest przez operatora kropki (.). Jednak rodzaj własności jest uzyskać i ustawiać samego rodzaju, a nie na zasadzie przykładu. Przykłady są następujące:
import Cocoa 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 = 98 print(stud1Mark1.InternalMarks) stud1Mark2.InternalMarks = 87 print(stud1Mark2.InternalMarks)
Wyjście powyżej wykonywanie programu jest:
97 87