Правило включения типов — различия между версиями
Elena (обсуждение | вклад) (Новая страница: «При задании значений переменным, сравнении, а также прочих операциях, где участвуют два ар...») |
(нет различий)
|
Версия 08:21, 20 апреля 2011
При задании значений переменным, сравнении, а также прочих операциях, где участвуют два аргумента, возможно допущение логической ошибки – сравнение данных разных типов (например, строки и числа). Сервер логики Oktell помогает решить подобные задачи и исключить подобные некорректности использованием правила включения типов.
Правило: если на выходе при подстановке значения переменной требуется строка, то ее значение переводится в строку без потерь. Если требуется число или дата/время, то обработчик сценария пытается преобразовать значение переменной к нужному типу, и в случае невозможности корректного приведения типов в качестве результата будет взято значение по умолчанию (для типа «число» – это 0, для типа «строка» – это пустая строка, для типа «дата/время» – это текущая дата/время).
В качестве примеров:
- Целое число 1 корректно переходит в строку «1»;
- строка «1» менее корректно переходит в число 1, поскольку в строке могут содержаться нечисловые символы;
- десятичное число 1,5 корректно переходит в строку «1.5»;
- Строка «1.5», а также «1,5» переходит в десятичное число менее корректно;
- Дата/время корректно преобразуется в строку, определяемую текущими настройками операционной системы (в стандартной русской раскладке «25.12.1981 12:30:00»);
- Перевод из строки в тип «дата/время» наименее корректен в силу больших различий в представлениях дат;
- Перевод из числа в дату и наоборот – некорректен;
- Перевод из строки, содержащей «лишние символы» в число – некорректен;
- Перевод из строки, содержащей текст, не соответствующий представлению дат/времени в строках в операционной системе сервера, в дату – некорректен.
Использование разных типов в одной операции может привести к нежелаемым последствиям для создателя сценария. Имейте это в виду при редактировании сценариев, и, по возможности, не допускайте подобного назначения свойств (за исключением случаев, когда это крайне необходимо и продиктовано форматом хранения данных в БД, а также необходимостью преобразования в число символов, набираемых абонентом с клавиатуры телефона).