Приведение типа данных для SRL

Как и в большинстве программ, сложить значения двух разных типов данных как правило невозможно. Однако PolyAnalyst может автоматически изменить тип значения при оценке SRL-выражения. Этот процесс называется приведением типов данных, его также называют "преобразованием" или "преобразованием типов данных" или "конверсией типов данных".

Например, PolyAnalyst может изменить тип значения с численного на строковый, или с типа "дата/время" на численное значение.

Например, рассмотрим операцию сложения 5.5 и 1, которое дает 6.5.

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

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

Другими словами, если бы нам нужно было использовать выражение 5.5 + 1 и мы попытались бы преобразовать числовое значение 5.5 в целочисленное значение 5, мы потеряли бы десятичный компонент "0.5" и следовательно, мы бы получили потерю данных (что привело бы к значению, равному 6, которое принципиально отличается от 6,5, в зависимости от того, какую цель вы ставите перед собой).

Вместо этого, во избежание возможной потери данных, в PolyAnalyst происходит следующее: в выражении 5.5 + 1 целое число 1 сначала преобразуется в числовое значение 1.0. Таким образом, получаем выражение 5.5 + 1.0. Такое выражение обрабатывается просто, поскольку теперь мы просто складываем два числовых значения (два значения одного типа), и в результате получаем числовое значение 6.5. Целочисленное значение 1 подверглось конверсии типов, чтобы выполнить требование о том, что каждый операнд (значение) оператора сложения (+) должен быть выражен данными одного типа. Приведение типов также происходит при работе с данными других типов, в частности тот же принцип применяется во избежание потери данных.

Булевы значения можно складывать благодаря преобразованию данных, поскольку при этом они преобразуются в целые числа. ИСТИНА и ДА представляют целое число 1, ЛОЖЬ и НЕТ - 0. Благодаря преобразованию данных можно создавать выражения типа ИСТИНА+1, ЛОЖЬ - 4 или НЕТ/ЛОЖЬ * ИСТИНА. Конечно, это не интуитивно, и вам не следует выполнять математические операции с булевыми значениями, однако такие операции возможны.

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