- •Лекция 3. Основные элементы языка Caché Object Script
- •1. Переменные
- •Основное назначение Глобал - предоставление доступа к сохраненным объектам прбд.
- •2. Операторы и выражения
- •Оператор проверки по шаблону
- •Выражение - совокупность простых выражений, соединенные унарными или бинарными операндами, что дает конечное значение.
- •Представление чисел и неявное преобразование типов данных
Представление чисел и неявное преобразование типов данных
Динамически типизируемые языки (подобные 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" эквивалентно логическому выражению ЛОЖЬ ИЛИ ИСТИНА, что в итоге представляет собой истинное высказывание.
