Добавил новый пример
This commit is contained in:
parent
3c1d8c52ea
commit
ea4be34346
|
|
@ -1,9 +1,11 @@
|
|||
// Пример иллюстрирует использование значка & для снятия атрибута ключевого слова
|
||||
var
|
||||
&begin,&end: integer;
|
||||
begin
|
||||
&begin := 1;
|
||||
&end := 2;
|
||||
var t: System.Type := &begin.GetType; // в System.Type использовать & не надо
|
||||
write(&begin,' ',&end,' ',t);
|
||||
// Пример иллюстрирует использование знака "&" (под 7 в англ. раскладке) для снятия атрибута ключевого слова
|
||||
|
||||
var
|
||||
&begin,&end: integer;
|
||||
|
||||
begin
|
||||
&begin := 1;
|
||||
&end := 2;
|
||||
var t: System.Type := &begin.GetType; // в System.Type использовать & не надо
|
||||
write(&begin,' ',&end,' ',t);
|
||||
end.
|
||||
29
InstallerSamples/!MainFeatures/01_First/Amp2.pas
Normal file
29
InstallerSamples/!MainFeatures/01_First/Amp2.pas
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
// Пример иллюстрирует использование знака "&" для явного указания шаблонного типа подпрограммы
|
||||
|
||||
function GetDefault<T>: T :=
|
||||
default(T);
|
||||
|
||||
type
|
||||
GenericType<T> = class
|
||||
constructor := exit;
|
||||
static procedure p1 := writeln(typeof(T));
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
// var o := GetDefault<byte>; //Ошибка: Встречено ';', а ожидалось выражение
|
||||
// компилятор не отличает знак сравнения < от открытия угловой скобки
|
||||
// и поэтому видит эту строчку как "(GetDefault < byte) > ;"
|
||||
// ";" там оказывается неожиданно, потому что компилятор ожидал ещё какое то выражение для сравнения
|
||||
|
||||
// но, знаком "&" можно экранировать "<"
|
||||
// то есть переключить значение "<" со знака сравнения на открывающуюся скобочку:
|
||||
var o := GetDefault&<byte>;
|
||||
|
||||
// в случае с шаблонными типами - обычно "&" не нужен
|
||||
var a := new GenericType<word>;
|
||||
|
||||
// однако для вызова статичного метода - его так же надо поставить
|
||||
GenericType&<real>.p1;
|
||||
|
||||
end.
|
||||
Loading…
Reference in a new issue