diff --git a/InstallerSamples/!MainFeatures/01_First/Amp.pas b/InstallerSamples/!MainFeatures/01_First/Amp.pas index 64c8ee9f9..f2024633d 100644 --- a/InstallerSamples/!MainFeatures/01_First/Amp.pas +++ b/InstallerSamples/!MainFeatures/01_First/Amp.pas @@ -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. \ No newline at end of file diff --git a/InstallerSamples/!MainFeatures/01_First/Amp2.pas b/InstallerSamples/!MainFeatures/01_First/Amp2.pas new file mode 100644 index 000000000..5c6e50bba --- /dev/null +++ b/InstallerSamples/!MainFeatures/01_First/Amp2.pas @@ -0,0 +1,29 @@ +// Пример иллюстрирует использование знака "&" для явного указания шаблонного типа подпрограммы + +function GetDefault: T := +default(T); + +type + GenericType = class + constructor := exit; + static procedure p1 := writeln(typeof(T)); + end; + +begin + +// var o := GetDefault; //Ошибка: Встречено ';', а ожидалось выражение + // компилятор не отличает знак сравнения < от открытия угловой скобки + // и поэтому видит эту строчку как "(GetDefault < byte) > ;" + // ";" там оказывается неожиданно, потому что компилятор ожидал ещё какое то выражение для сравнения + + // но, знаком "&" можно экранировать "<" + // то есть переключить значение "<" со знака сравнения на открывающуюся скобочку: + var o := GetDefault&; + + // в случае с шаблонными типами - обычно "&" не нужен + var a := new GenericType; + + // однако для вызова статичного метода - его так же надо поставить + GenericType&.p1; + +end. \ No newline at end of file