MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Декларативная и императивная часть языка QML
09.03.2018
22:25
Раздел: Компьютер - Программирование - Язык C++ - Библиотека Qt - QML

Декларативный язык QML имеет области, в которых вставляется императивный JS-код, и этот код выполняется. Такие области - это обработчики событий и самописные функции. Кстати одним из признаков императивного кода является наличие присвоения через символ равенства "=", в то время как в декларативных областях присвоения нет, а есть определение свойства через символ двоеточия ":".


Тут надо понимать, в чем отличие определения свойства от присвоения значения. С точки зрения декларативного языка, у объекта имеются только свойства, и ничего более. И если бы небыло механизма императивных вставок, то свойства бы не менялись, и объект бы существовал в одном первоначально заданном состоянии. Определение свойства - это задание начального состояния свойства. И если свойства не меняются, то о системе, в которой находится объект, можно сказать две вещи, в зависимости от того, под каким углом смотреть:


1. Объект не меняется во времени


либо


2. Объект существует вне времени, то есть в системе нет времени


Если все объекты не меняются во времени, то более общим будет второе утверждение, что в декларативной системе времени нет.


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


К императивным элементам относятся:


  • Области обработчиков событий (обычно это блок, именуемый "on...");
  • Тернатное выражение (это запись условия в виде "проверяемой выражение ? если истина : если ложь");
  • Самописные функции, определяемые через ключевое слово function
  • что-то еще, надо разбираться дальше.



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования