Правило включения типов

Материал из Oktell
Версия от 08:21, 20 апреля 2011; Elena (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

Правило: если на выходе при подстановке значения переменной требуется строка, то ее значение переводится в строку без потерь. Если требуется число или дата/время, то обработчик сценария пытается преобразовать значение переменной к нужному типу, и в случае невозможности корректного приведения типов в качестве результата будет взято значение по умолчанию (для типа «число» – это 0, для типа «строка» – это пустая строка, для типа «дата/время» – это текущая дата/время).


В качестве примеров:

  • Целое число 1 корректно переходит в строку «1»;
  • строка «1» менее корректно переходит в число 1, поскольку в строке могут содержаться нечисловые символы;
  • десятичное число 1,5 корректно переходит в строку «1.5»;
  • Строка «1.5», а также «1,5» переходит в десятичное число менее корректно;
  • Дата/время корректно преобразуется в строку, определяемую текущими настройками операционной системы (в стандартной русской раскладке «25.12.1981 12:30:00»);
  • Перевод из строки в тип «дата/время» наименее корректен в силу больших различий в представлениях дат;
  • Перевод из числа в дату и наоборот – некорректен;
  • Перевод из строки, содержащей «лишние символы» в число – некорректен;
  • Перевод из строки, содержащей текст, не соответствующий представлению дат/времени в строках в операционной системе сервера, в дату – некорректен.


Использование разных типов в одной операции может привести к нежелаемым последствиям для создателя сценария. Имейте это в виду при редактировании сценариев, и, по возможности, не допускайте подобного назначения свойств (за исключением случаев, когда это крайне необходимо и продиктовано форматом хранения данных в БД, а также необходимостью преобразования в число символов, набираемых абонентом с клавиатуры телефона).