Zrozumienie typów generycznych w Delphi
Dowiedz się, jak sparametryzować swoje rekordy i typy
Maskot / Getty Images
Generics, potężny dodatek do Delphi, został wprowadzony w Delphi 2009 jako nowa funkcja językowa. Generyki lub typy ogólne (znane również jako typy parametryczne ), umożliwiają zdefiniowanie klas, które nie definiują konkretnie typu niektórych członków danych.
Jako przykład, zamiast używać typu TObjectList do posiadania listy dowolnych typów obiektów, z Delphi 2009, Generyki. Jednostka kolekcji definiuje silniej typizowany TObjectList.
Oto lista artykułów wyjaśniających typy generyczne w Delphi z przykładami użycia:
Co, dlaczego i jak na generykach w Delphi
Generics z Delphi 2009 Win32
Generyki są czasami nazywane parametrami generycznymi, nazwą, która pozwala je nieco lepiej wprowadzić. W przeciwieństwie do parametru funkcji (argumentu), który ma wartość, parametr ogólny jest typem. I parametryzuje klasę, interfejs, rekord lub, rzadziej, metodę ... Z, jako bonus, anonimowe procedury i odwołania do procedur
Samouczek Delphi Generics
Delphi tList, tStringList, tObjectlist lub tCollection mogą być użyte do budowy wyspecjalizowanych kontenerów, ale wymagają rzutowania typów. Dzięki Generics unika się rzutowania, a kompilator może szybciej wykryć błędy typu.
Używanie generyków w Delphi
Po napisaniu klasy przy użyciu parametrów typu ogólnego (ogólnych), możesz użyć tej klasy z dowolnym typem, a typ, który zdecydujesz się użyć z dowolnym użyciem tej klasy, zastąpi typy ogólne użyte podczas tworzenia klasy.
Ogólne interfejsy w Delphi
Większość przykładów Generics, które widziałem w Delphi, używa klas zawierających typ generyczny. Jednak podczas pracy nad osobistym projektem zdecydowałem, że chcę mieć interfejs zawierający typ ogólny.
Przykład prostego typu generycznego
Oto jak zdefiniować prostą klasę generyczną:
rodzaj
TGenericContainer = klasa
Wartość : T;
koniec ;
Z następującą definicją, oto jak używać ogólnego kontenera liczb całkowitych i ciągów:
był
genericInt : TGenericContainer;
genericStr : TGenericContainer;
zaczynać
genericInt := TGenericContainer.Create;
genericInt.Value := 2009; //tylko liczby całkowite
genericInt.Free;
genericStr := TGenericContainer.Create;
genericStr.Value := 'Delphi Generics'; //tylko ciągi
genericStr.Free;
koniec ;
Powyższy przykład tylko zarysowuje powierzchnię używania Generics w Delphi (choć niczego nie wyjaśnia - ale powyższe artykuły zawierają wszystko, co chcesz wiedzieć!).
Dla mnie generyki były powodem przejścia z Delphi 7/2007 do Delphi 2009 (i nowszych).