Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 3. Основні елементи мови Caché Object Script-рус.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
55 Кб
Скачать
☆

Представление чисел и неявное преобразование типов данных

Динамически типизируемые языки (подобные Cache ObjectScript), следуют соглашениям, с помощью которых автоматически в зависимости от контекста осуществляется преобразование типов данных.

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

Существенным при этом является представление чисел в Cache ObjectScript. Они могут иметь форму целого числа (например, 4661), а также десятичного числа с позицией перед десятичной точкой или без нее (например, 2.1 или .57). Наконец, осталось представление в экспоненциальной форме, где мантисса имеет одну из только что названных форм, а экспонента должна быть положительным или отрицательным целым числом (например, ЗЕ7 или 31.4Е-1).

Начиная с версии 4.0 Cache ObjectScript, символ «е» в нижнем регистре также может быть использован для задания экспоненциальной формы числа. Таким образом, константы 1e9 и 1Е9 эквивалентны.

Всем этим числам могут предшествовать ведущие нули (например, 001 или 03Е-3). Перед числом разрешено ставить сколь угодно много знаков плюс и минус. Каждый знак минус изменяет предшествующий знак результата, знаки плюс игнорируются.

При числовой интерпретации строки символов Cache ObjectScript анализируются слева направо. Интерпретация прерывается, как только распознается символ, не укладывающийся в рамки, определенные выше. Если числовая интерпретация невозможна, строке символов присваивается числовое значение 0. Отправным пунктом для следующих примеров является тот факт, что все унарные и бинарные числовые операторы вызывают числовую интерпретацию строки.

Таблица 5. Примеры числовой интерпретации.

Выражение

Значение

+"123abc"

123

"314.159E - 2xyz"

3.14159

+"Это число = 1265"

0

+$Horolog

57123

"3 Яблока" + "4 Груши"

7

1 > "Большой"

1 (ИСТИНА)

".3" = "ЗЕ-1"

0 (ЛОЖЬ)

+".3" = +"ЗЕ-1"

1 (ИСТИНА)

Два первых примера очевидны, третий не содержит в начале интерпретируемую в виде числа последовательность символов, цифры, идущие далее, не учитываются. Четвертый пример показывает, каким образом на практике получают часть функции $Horolog, относящуюся ко дню. В шестом примере необходимо знать, что оператор БОЛЬШЕ – это числовой оператор (1 больше 0). Это имеет место и для оператора МЕНЬШЕ, но не для оператора равенства «=»! Как раз это положение вещей и отражено в седьмом примере: ".3" и "ЗЕ-1" – это две совершенно разные строки символов, однако их числовое содержимое одинаково.

При проверке на числовое равенство двух переменных сначала должна быть произведена явная числовая интерпретация (последний пример).

В заключение остановимся на логической интерпретации строки символов, являющейся производной от числовой. Если числовая интерпретация строки символов не равна 0, то ее логическая интерпретация — ИСТИНА, то есть 1. И наоборот, если числовая интерпретация 0, то логическая интерпретация данной строки ЛОЖЬ, то есть 0.

Например, выражение "abc" ! "1 Pizza" эквивалентно логическому выражению ЛОЖЬ ИЛИ ИСТИНА, что в итоге представляет собой истинное высказывание.