Latest web development tutorials

Swift недвижимость

Swift значение свойства с определенной класса, структуры или перечисления ассоциации.

Свойство можно разделить на свойства хранения и расчетные свойства:

Свойства магазинСвойства Расчет
В качестве примера постоянной или переменной части хранения Рассчитано (а не хранить) значение
Для классов и структур Для классов, структур и перечислений

Свойства хранения и свойства, как правило, используются для расчета экземпляров определенного типа.

Свойства также могут быть использованы непосредственно в самом типе, это свойство называется атрибут типа.

В качестве альтернативы, вы можете определить свойства наблюдателя для мониторинга изменений в значения свойств, для того, чтобы вызвать пользовательскую операцию. Зритель атрибутов могут быть добавлены, чтобы написать свой собственный атрибут памяти может быть добавлен в свойства, унаследованные от родительского класса.


Свойства магазин

Проще говоря, атрибут памяти является постоянной или переменной сохраняется в экземпляре определенного класса или структуры внутри.

Свойство хранения может быть переменной атрибутов хранения (определяется ключевым словом VAR), он также может быть постоянным атрибуты хранения (определяемые ключевым словом LET).

  • Можно задать значение по умолчанию в свойстве, когда эти определения сохраняются

  • Можно также установить или изменить хранимую значение свойства в процессе строительства, и даже изменить значение постоянного хранения имущества

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

Выход выше выполнение программы:

67
3.1415

Рассмотрим следующий код:

let pi = 3.1415

Код пи указать значения по умолчанию, хранящиеся в атрибуте определения, когда (р = 3,1415), поэтому независимо от того, когда вы реализуете структуру, она не изменится.

Если определить постоянное свойство хранения, он будет жаловаться, если вы пытаетесь изменить следующим образом:

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

Выше ошибка выполнения программы, ошибка выглядит следующим образом:

error: cannot assign to property: 'numbers' is a 'let' constant
n.numbers = 8.7

Значение 'число' является константой, вы не можете изменить его.


Задержка Свойства хранения

атрибут памяти Задержка относится к первому времени, когда свойство называется его начальное значение будет рассчитываться.

Перед использованием декларацииленивым атрибута , чтобы указать задержку свойств хранения.

Примечание:
Свойство Задержка хранения должна быть объявлена как переменная ( с помощью var ключевое слово), так как стоимость имущества не может быть завершено до конструктора экземпляра. Константа недвижимости до завершения строительства должен иметь начальное значение, и, следовательно, не может быть объявлена ​​как задержка собственности.

Свойства задержки хранения обычно используются:

  • Задержка создания объектов.

  • Когда значение свойства зависит от другого неизвестного класса

import Cocoa

class sample {
    lazy var no = number() // `var` 关键字是必须的
}

class number {
    var name = "w3big Swift 教程"
}

var firstsample = sample()
print(firstsample.no.name)

Выход выше выполнение программы:

w3big Swift 教程

Примеры переменных

Если вы имели опыт в Objective-C, вы должны знать значение для хранения экземпляра класса Objective-C и ссылка предоставляет два метода. Для свойства, он также может быть использован как экземпляр бэкенд переменные для хранения значений свойств.

Swift язык программирования, чтобы использовать эти теории для достижения единой собственности. Swift атрибуты не соответствующие переменные экземпляра, свойства хранения фоновых не могут быть доступны непосредственно. Это позволяет избежать проблем методов доступа при различных сценариях, но и упростить определение собственности как утверждение.

Вся информация в типе имущества - в том числе имя, тип и функции управления памятью - все в уникальном месте (определение типа) определений.


Свойства Расчет

В дополнение к атрибутам хранения, категорий, конструкций, и перечислений могут быть определены для расчета значений свойств вычисленных атрибутов не хранится непосредственно, но и обеспечить поглотитель , чтобы получить значение необязательного сеттера для установки значения других свойств или косвенных переменных.

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)

Выход выше выполнение программы:

(150.0, 75.0)
-150.0
-65.0

Если расчетная сеттер свойство не определяет имя параметра представляет новое значение, вы можете использовать имя по умолчанию Новое_значение.


Только для чтения атрибутов расчет

Только Getter не рассчитали сеттер свойство только для чтения атрибутов вычисления.

Свойство только для чтения всегда возвращает расчетное значение, (.) Оператор, чтобы получить доступ через точку, но не может установить новое значение.

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

Выход выше выполнение программы:

Swift 属性
3.09

Примечание:

Вы должны использовать var ключевое слово , чтобы определить вычисленные атрибуты, включая вычисления атрибут только для чтения, потому что их стоимость не является фиксированной. let ключевое слово используется только объявить постоянный атрибут , который не может быть изменен после того, как значение инициализации.


Свойство наблюдателя

Изменение атрибутов просмотра, чтобы отслеживать и реагировать на значение свойства каждое свойство устанавливается, когда значение свойства будет называться наблюдать, и даже новое значение и текущее значение то же время не является исключением.

Вы можете добавить свойства к зрителю в дополнение к памяти задержки атрибутов, кроме свойств хранения может также добавить атрибуты наблюдателя за унаследованного имущества (включая хранение и вычисления атрибутов свойств) путем переопределения атрибутов пути.

Примечание:
Вам не нужно, чтобы добавить свойство наблюдателя для расчета свойств не могут быть перегружены, потому что вы можете непосредственно контролировать и реагировать на изменения сеттер значение.

Вы можете добавить один или все из следующих действий наблюдателя собственности:

  • willSet перед установкой нового вызова значения
  • didSet после того, как новое значение устанавливается немедленно вызвать
  • willSet и didSet наблюдатель не будет называться в свойстве процесса инициализации
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

Выход выше выполнение программы:

计数器: 100
新增数 100
计数器: 800
新增数 700

Глобальные и локальные переменные

Режим вычисления атрибутов и наблюдатель описывается также могут быть использованы для глобальных и локальных переменных.

Локальные переменныеГлобальные переменные
В функции, метода или внутренних замыканий определенные переменные. Переменная вне функции, метода, или любой тип определения замыкания.
Для хранения и извлечения значений. Для хранения и извлечения значений.
недвижимость для хранения, чтобы получить и установить значение. недвижимость для хранения, чтобы получить и установить значение.
Также используется для расчета свойств. Также используется для расчета свойств.

Тип недвижимости

Атрибут Тип определяется как часть типа в типе написания наиболее удаленных фигурные скобки ({}) внутри.

Используйте ключевое слово статический определить тип значения атрибута тип, класс ключевое слово, чтобы определить тип атрибута класса.

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

Примечание:
Представлен пример расчета атрибута типа только для чтения, но вы также можете определить расчетную для чтения и записи синтаксиса атрибутов типа подобный расчет с атрибутом экземпляра.


Получить и установить значение типа недвижимости

Примеры подобных свойств, тип доступа к собственности осуществляется оператором точка (.). Тем не менее, тип собственности, чтобы получить через и установить сам тип, а не в качестве примера. Примерами могут служить следующие:

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)

Выход выше выполнение программы:

97
87