Когда правая часть оператор in является константой множест-
венного типа, компилятор генерирует включение проверки с помощью
команд CMP. Такие поставляемые проверки более эффективны чем код,
генерируемый в противном случае соответствующими булевскими выра-
жениями с использованием операций отношения. Например, оператор:
if ((Ch >= 'A') and (Ch <: 'Z')) or
((Ch >= 'a') and (Ch <= 'z')) then ...;
менее читаем и менее эффективен чем
if Ch in ['A'..'Z', 'a'..'z'] then ...;
Поскольку свертывание констант применяется к константам мно-
жественного типа также как к константам других типов, можно ис-
пользовать описания const без потери эффективности.
const
Upper = ['A'..'Z'];
Lower = ['a'..'z'];
Alpha = Upper + Lower;
С учетом данных описаний оператор if генерирует тот же код,
что и в случае предыдущего оператор if:
if Ch in Alpha then ... ;