По мотивам - ToDo. Написать про массивы, списки и итераторы
Коротко. Сделал контроль типов для элементов массивов.
Примерно так:
Ну и определение типа:
Более сложный вариант:
Со ссылкой на функцию:
Понятное дело, что дальше буду делать "вывод типов" и уменьшать количество Run-time ошибок в пользу Compile-time.
Ну и ещё пример:
Ну и понятно, что бывают ARRAY OF ARRAY OF X:
Ну и аналогично для Run-time:
Ну и учитывая - Коротко. Сделал описание части аксиоматики на Dephi, а части - на скриптах - я теперь могу часть кода писать на Delphi, а часть на скриптах и всё интегрируется в EXE-файл.
Теперь можно и на Delphi7 использовать лямбды, итераторы и прочие "вкусности".
Коротко. Сделал контроль типов для элементов массивов.
Примерно так:
ARRAY VAR A ARRAY OF STRING VAR B A := [ 1 2 3 'hello' ] // - компилируется B := [ 1 2 3 'hello' ] // - не компилируется
Ну и определение типа:
ARRAY VAR A ARRAY OF STRING TYPE StringArray // - это "алиас" к ARRAY OF STRING StringArray VAR B A := [ 1 2 3 'hello' ] // - компилируется B := [ 1 2 3 'hello' ] // - не компилируется
Более сложный вариант:
STRING FUNCTION X Result := 'hello' ; ARRAY VAR A ARRAY OF STRING TYPE StringArray // - это "алиас" к ARRAY OF STRING StringArray VAR B A := [ 1 2 3 X ] // - компилируется B := [ 1 2 3 X ] // - компилируется, но получаем Run-Time ошибку
Со ссылкой на функцию:
STRING FUNCTION X Result := 'hello' ; ARRAY VAR A ARRAY OF STRING TYPE StringArray // - это "алиас" к ARRAY OF STRING StringArray VAR B A := [ 1 2 3 @ X ] // - компилируется B := [ 1 2 3 @ X ] // - не компилируется
Понятное дело, что дальше буду делать "вывод типов" и уменьшать количество Run-time ошибок в пользу Compile-time.
Ну и ещё пример:
ARRAY VAR A ARRAY OF STRING TYPE StringArray // - это "алиас" к ARRAY OF STRING ARRAY OF INTEGER TYPE IntegerArray // - это "алиас" к ARRAY OF INTEGER StringArray VAR B IntegerArray VAR C A := [ 1 2 3 'hello' ] // - компилируется B := [ 1 2 3 'hello' ] // - не компилируется C := [ 1 2 3 'hello' ] // - не компилируется StringArray VAR B1 IntegerArray VAR C1 B1 := [ '1' '2' '3' 'hello' ] // - компилируется C1 := [ 1 2 3 4 ] // - компилируется
Ну и понятно, что бывают ARRAY OF ARRAY OF X:
ARRAY OF ARRAY OF STRING VAR A A := [ [ 'a' 'b' ] [ 'c' 'd' ] ] // - компилируется A := [ [ 'a' 'b' ] [ 'c' 3 ] ] // - не компилируется
Ну и аналогично для Run-time:
INTEGER FUNCTION X Result := 3 ; ARRAY OF ARRAY OF STRING VAR A A := [ [ 'a' 'b' ] [ 'c' 'd' ] ] // - компилируется A := [ [ 'a' 'b' ] [ 'c' 'd' ] [ 'e' ] ] // - компилируется, т.е. размерность - не важна A := [ [ 'a' 'b' ] [ 'c' X ] ] // - компилируется, но получаем Run-Time ошибку
Ну и учитывая - Коротко. Сделал описание части аксиоматики на Dephi, а части - на скриптах - я теперь могу часть кода писать на Delphi, а часть на скриптах и всё интегрируется в EXE-файл.
Теперь можно и на Delphi7 использовать лямбды, итераторы и прочие "вкусности".
Комментариев нет:
Отправить комментарий