type
My = class
constructor Create(i: integer);
begin
end;
end;
var m: My := new My(5);
Эквивалентным способом создания объекта является вызов конструктора в стиле Object Pacal:
var m: My := My.Create(5);
Создание объекта класса при инициализации переменной проще проводить, используя
var m := new My(5);
В записи также могут быть определены конструкторы, которые вызываются аналогично. Но в отличие от класса вызов конструктора записи не выделяет память (она уже выделена) и только заполняет значения полей.
Операции typeof и sizeof
Операция sizeof(
Операция typeof(
type
Base = class ... end;
Derived = class(Base) ... end;
var b: Base := new Derived;
begin
writeln(b.GetType = typeof(Derived));
end.
Операция явного приведения типов
Операция явного приведения типов имеет вид
и позволяет преобразовать выражение к типу
Пример.
type
pinteger = ^integer;
Season = (Winter,Spring,Summer,Autumn);
var i: integer;
b: byte;
p: pointer := @i;
s: Season;
begin
i := integer('z');
b := byte(i);
i := pinteger(p);
s := Season(1);
end.
При приведении размерных типов к типу Object происходит упаковка.
Пример.
var i: integer := 5;
begin
var o: Object := Object(i);
end.
Приоритет операций
Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.
Таблица приоритетов операций
@, not, ^, +, - (унарные), new | 1 (наивысший) |
*, /, div, mod, and, shl, shr, as, is | 2 |
+, - (бинарные), or, xor | 3 |
=, <>, <, >, <=, >=, in, = | 4 (низший) |
Для изменения порядка выполнения операций в выражениях используются скобки.
Операторы
Операторы: обзор
В PascalABC.NET определены следующие операторы.
Операторы присваивания
Составной оператор
Оператор описания переменной
Оператор цикла for
Оператор цикла foreach
Операторы цикла while и repeat
Условный оператор if
Оператор выбора варианта case
Оператор вызова процедуры
Оператор try except
Оператор try finally
Оператор raise
Операторы break, continue и exit
Оператор goto
Оператор lock
Оператор with
Пустой оператор
Оператор присваивания
Оператор присваивания имеет вид:
переменная := выражение
В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной.
Оператор присваивания заменяет текущее значение переменной значением выражения.
Например:
i := i + 1; // увеличивает значение переменной i на 1
В PascalABC.NET определены также операторы присваивания со значками +=, -=, *=, /=. Для числовых типов действие данных операторов описано здесь. Кроме того, использование операторов += и *= для строк описано здесь и операторов +=, -= и *= для множеств - здесь. Их действие для процедурных переменных описано здесь.
Операторы +=, -=, *=, /= имеют следующий смысл: a #= b означает a := a # b, где # - знак операции +, -, *, /.
Например:
a += 3; // увеличить a на 3
b *= 2; // увеличить b в 2 раза
Опертор /= неприменим, если выражение слева - целое.
Операторы +=, -=, *=, /= могут также использоваться со свойствами классов соответствующих типов в левой части.
Составной оператор (блок)
Составной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:
begin
операторы
end