Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Defining lazy properties Определение ленивых свойства

Defining and instantiating classes | Defining and instantiating classes Определение и создание экземпляра классы | Adding initializers to a class | Adding initializers to a class Добавление инициализаторами к классу | Using inheritance | Using inheritance Использование наследования | Creating computed properties | Using inheritance Создание вычисляемых свойств | Using type properties and methods | Using type properties and methods Используя свойства и методы типа |


Читайте также:
  1. Attribute – определение
  2. B)& Решение, определение, постановление и судебный приказ
  3. Blocks on the webpage (properties are written in CSS file)
  4. Classification of phraseological units according to their contextual properties is suggested by
  5. Creating computed properties
  6. Defining and instantiating classes
  7. Defining and instantiating classes Определение и создание экземпляра классы

 

- Мы видели, что быстрые требования, что наши переменные и константы, приведенные осмысленные значения, прежде чем они привыкли. И мы видели несколько способов, чтобы убедиться, что это происходит в наших классах. Либо с инициализаторах или путем предоставления ценностей в декларации об имуществе, что я делаю здесь. Иногда, расчета этих начальных значений, как только экземпляр объекта не лучшее использование наших приложений времени. Представьте себе, в нашем классе, что у нас есть свойство, называемое бонус. И иногда мы будем использовать это свойство, а иногда и мы не будем.Проблема здесь, что бонус не предоставляется буквальное значение, которое он собирается получить его значение из другой функции под названием getDailyBonus в моем примере здесь, что мы можем считать потребности, чтобы сделать некоторые комплексной переработки, чтобы понять это.

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

Один из способов, это я мог бы сделать это по желанию, используя знак вопроса я мог определить бонус в виде дополнительного Int. Тогда начнем добавлять некоторую логику к нему так, что, когда мне нужно получить доступ, это свойство проверить его за то, что ноль, и если он равен нулю, то мы пойдем выбирать это значение. Но другой способ, более простой способ, что у Свифта мы можем сделать это ленивый собственности. С ленивой собственности мы описываем начальное значение так же, как мы бы нормально, но Свифт не будет беспокоить на самом деле инициализации недвижимость пока кто-то не попытается получить к нему доступ.

И это невероятно легко, все, что я сделать, это добавить слово ленивый до нашей вар декларации. Теперь обратите внимание на немедленное разницу без слова ленивый. Когда я экземпляра объекта, я могу видеть результаты здесь, что эта функция вызывается, она выводит эту печатать строку в верхней генерирует случайное число. Но если я ставлю это слово ленивый назад перед ней вызов функции исчезает это не происходит прямо сейчас.Объект описания себя как имеющие имя John Doe, ноль баллов и бонус в настоящее время равна нулю.

Но в отличие от обязательно, я не придется беспокоиться об этом бонус бытия ноль, у меня нет, чтобы проверить его за то, что ноль, у меня нет, чтобы развернуть его. Потому что как только я пытаюсь получить доступ к ленивый собственность, я просто хочу, чтобы сделать это, как только это экземпляр я собираюсь идти вперед и распечатать все newPlayer.bonus является то, что собирается вызвать Свифт сразу инициализировать его он будет вызывать функцию, она получит значение, и он вернется, как если бы это имело значение все вместе. Он всегда будет иметь значение, если я пытаюсь его использовать.

 

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

 

 


Дата добавления: 2015-08-20; просмотров: 165 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Defining lazy properties| Adding property observers

mybiblioteka.su - 2015-2024 год. (0.007 сек.)