Вільний паскаль: шаблони класів в object pascal

Відео: [C ++] Шаблонові функції і шаблонні класи

Вільний паскаль: шаблони класів в Object Pascal
Як я вже згадував, одним з серйозних недоліків Pascal довгий час була відсутність коштів узагальненого програмування - шаблонів. Будь алгоритм на Паскалі був жорстко «прив`язаний» до певного типу даних, і створити узагальнені алгоритми і структури даних на зразок бібліотеки STL в C ++ було неможливо. Проблему можна було в деяких випадках обійти, використовуючи поліморфні покажчики на класи, пов`язані спадкуванням, але це не вирішувало її в принципі. Зараз в Free Pascal існують шаблонні класи (шаблонних функцій поки немає). Шаблони реалізовані як своєрідні макроси, які просто підставляють потрібний тип даних в узагальнений код на етапі компіляції. Наскільки мені відомо, така реалізація не дозволяє писати «шаблонні метапрограми», по суті, розширюють можливості самого компілятора, як це можна зробити на С ++ (https://en.wikipedia.org/wiki/ Template metaprogramming). Шаблони в Pascal виконують тільки свою первинну функцію - дозволяють не писати один і той же код для різних типів даних.

Ось простий приклад, який ілюструє використання шаблонів:
program Hello _ template-type // Оголошуємо узагальнений (generic) классgeneric Tadderlt; _ Tgt; = Class (TObject) // Замість _ T буде підставлений потрібний тип даних // після спеціалізації шаблонаprocedure add (item1, item2: _T) -end - // Необхідно явно спеціалізувати шаблони для всіх // типів даних, які ми хочемо іспользоватьTint _ adder = specialize Tadder-Tstr _ adder = specialize TAdder-// Тіло методу шаблонного класу. На відміну від С ++ // повторювати оголошення «generic" не нужно.procedure TAdder.add (item1, item2: _T) -beginwriteln ( `Sum of elements:`, item1 + item2) -end-var adder1: Tint _ adder -adder2: Tstr _ adder-beginadder1.add (1,2) -adder2.add ( `Hello`, `world!`) - end.

Як видно з цього прикладу, шаблон повинен бути спеціалізований для конкретного типу даних до його використання шляхом створення нового типу. Не дуже зручно в порівнянні з С ++, але все ж набагато краще, ніж нічого. Щоб скомпілювати наведену програму, потрібно явно вказати компілятору, що використовується діалект «Object Pascal»:






fpc -Mobjfpc filename.pas




Хочете купити хороший ноутбук і приступити до вивчення мови програмування Pascal? Тоді Вам точно точно слід заглянути в інтернет-магазин "Сокіл" (ось посилання - https://sokol.ua/netbooks/lenovo/c18246/v1184/ (https://sokol.ua/netbooks/lenovo/c18246/v1184/ )), де Ви зможете придбати відмінний ноутбук марки Lenovo на найвигідніших для себе умовах!

ІНШЕ

Кулінарні рецепти 1.12 фото

Кулінарні рецепти 1.12

Програма призначена для ведення бази даних кулінарних рецептів, обліку продуктів, складання та калькуляції страв,…

Вільний паскаль: gnu pascal фото

Вільний паскаль: gnu pascal

Відео: 0101 Free Pascal перша програма В GCC входить свій вільний компілятор Паскаля - gpc, який не має відношення до…

Seed7: бібліотеки фото

Seed7: бібліотеки

Відео: пентагональними призма з насіння льону. П`ятикутна призма. геометричні фігури.Стереометрія Якщо Сі або C ++ без…

Взаємодія chaiscript з c ++ фото

Взаємодія chaiscript з c ++

Відео: Jason Turner: Why and How To Add ScriptingІдеологія взаємодії ChaiScript і С ++ Скриптова мова ChaiScript…

» » Вільний паскаль: шаблони класів в object pascal