Pascalutilsは、Delphiのオブジェクトライブラリであり、構文が許す限り、他の現代言語と同様の構文糖を実装するデータ構造のフリーパスカルです。
ライブラリがテストされています
ソースを取得し、ソースディレクトリをプロジェクト検索パスに追加します。 FPCの場合、ソースディレクトリをFPC.CFGファイルに追加します。
リポジトリgit clone https://github.com/isemenkov/pascalutilsクローンします。
使用するユニットをuses句に追加します。
Tany Classは、単一値のタイプセーフコンテナについて説明しています。
uses
utils.any;
type
generic TAny<T> = classToptional Classはオプションの値を表します。すべてのToptionalには値が含まれているか、Rust Langのようには含まれていません。
uses
utils.optional;
type
generic TOptional<T> = class詳細については、Wikiページをご覧ください。
結果タイプには通常、返された値またはエラーが含まれており、GOプログラム全体でユビキタスな共通(値、ERR)パターンのファーストクラスのカプセル化を提供できます。
uses
utils.result;
type
generic TResult<V, E> = class詳細については、Wikiページをご覧ください。
tvoidResultには、GoまたはRust言語のようなOKフラグまたはエラータイプが含まれています。それは価値のない特殊なトレスタイプです。
uses
utils.result;
type
generic TVoidResult<E> = class詳細については、Wikiページをご覧ください。
tdatasizeクラスは、データサイズを操作するためのインターフェイスを提供します。
uses
utils.datasize;
type
TDataSize = class詳細については、Wikiページをご覧ください。
TimeIntervalクラスは、時間間隔を操作するためのインターフェイスを提供します。
uses
utils.timeinterval;
type
TTimeInterval = class詳細については、Wikiページをご覧ください。
TPAIRクラスは、さまざまなタイプ(T1とT2)の値のペアを結合します。個々の値は、C ++言語のように、1番目と2番目のパブリックメンバーからアクセスできます。
uses
utils.pair;
type
generic TPair<T1, T2> = class詳細については、Wikiページをご覧ください。
Ttupleは、要素のコレクションを保持できるオブジェクトです。各要素は、C ++言語のように異なるタイプにすることができます。
uses
utils.tuple;
type
generic TTuple3<T1, T2, T3> = class
generic TTuple4<T1, T2, T3, T4> = class
generic TTuple5<T1, T2, T3, T4, T5> = class
generic TTuple6<T1, T2, T3, T4, T5, T6> = class
generic TTuple7<T1, T2, T3, T4, T5, T6, T7> = class
generic TTuple8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TTuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TTuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = class詳細については、Wikiページをご覧ください。
TVariantは、タイプセーフユニオンを表すクラステンプレートです。 TVariantのインスタンスは、いつでもその代替タイプの1つの値を保持します。
uses
utils.variant;
type
generic TVariant2<T1, T2> = class
generic TVariant3<T1, T2, T3> = class
generic TVariant4<T1, T2, T3, T4> = class
generic TVariant5<T1, T2, T3, T4, T5> = class
generic TVariant6<T1, T2, T3, T4, T5, T6> = class
generic TVariant7<T1, T2, T3, T4, T5, T6, T7> = class
generic TVariant8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TVariant9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TVariant10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = class詳細については、Wikiページをご覧ください。
Functorは、メンバー関数Callが定義されたクラスのインスタンスです。このメンバー関数により、オブジェクトは通常の関数呼び出しと同じ構文で使用できます。したがって、一般的な関数タイプが予想される場合、そのタイプはテンプレートパラメーターとして使用できます。
uses
utils.functor;
type
generic TUnaryFunctor<V, R> = class詳細については、Wikiページをご覧ください。
Functorは、メンバー関数Callが定義されたクラスのインスタンスです。このメンバー関数により、オブジェクトは通常の関数呼び出しと同じ構文で使用できます。したがって、一般的な関数タイプが予想される場合、そのタイプはテンプレートパラメーターとして使用できます。
uses
utils.functor;
type
generic TBinaryFunctor<V, R> = class詳細については、Wikiページをご覧ください。
これは、常に0(ゼロ)を返している特別な比較コンダクタです。実際の値は使用されていません。このファンチャーは、留置可能な値のためにコンテナに使用できます。
uses
utils.functor;
type
TUnsortableFunctor =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>);詳細については、Wikiページをご覧ください。
これは、avalue2の前にavalue1をソートする必要がある場合に負の値を返すファンクションです。Avalue2の後にavalue2、zeroの後にavalue1をソートする必要がある場合は正の値です。
uses
utils.functor;
type
generic TDefaultCompareFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>)
public
function Call (AValue1, AValue2 : V) : Integer;
end ;詳細については、Wikiページをご覧ください。
Avalue1 <avalue2の場合、trueを返すファンチャーです。
uses
utils.functor;
type
generic TDefaultLessFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);詳細については、Wikiページをご覧ください。
avalue1> avalue2の場合、trueを返すファンチャーです。
uses
utils.functor;
type
generic TDefaultGreaterFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);詳細については、Wikiページをご覧ください。
avalue1 = avalue2の場合、trueを返すファンチャーです。
uses
utils.functor;
type
generic TDefaultEqualFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);詳細については、Wikiページをご覧ください。
これは、ペア1キーをペア2キーの前にソートする必要がある場合、ネガティブ値を返すファンチャーです。ペア1キーの後にペア1キーをソートする必要があります。ペア1キーとペア2キーが等しい場合はゼロです。
uses
utils.functor, utils.pair;
uses
generic TDefaultPairKeyCompareFunctor<K, V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor
< { $IFDEF FPC } specialize { $ENDIF } TPair<K, V>, Integer>)詳細については、Wikiページをご覧ください。
API.CSTRINGは、C言語API CSTRING char *値に関するラッパーです。
uses
utils.api.cstring;
type
API = class
type
CString = class
end ;詳細については、Wikiページをご覧ください。
TarrayErrorsStackは、エラーコードを含むTの配列上の一般的なスタックです。
uses
utils.errorsstack;
type
generic TArrayErrorsStack<T> = class詳細については、Wikiページをご覧ください。
TlisterRorsStackは、エラーコードを含むTクラスのリスト上の一般的なスタックです。
uses
utils.errorsstack;
type
generic TListErrorsStack<T> = class詳細については、Wikiページをご覧ください。
Tforwarditeratorは、カスタムフォワード方向のイテレーターの基本クラスです。
uses
utils.enumerate;
type
generic TForwardIterator<V, Iterator> = class詳細については、Wikiページをご覧ください。
TbidirectionAliteratorは、カスタムフォワードおよび後方方向の反復器の基本クラスです。
uses
utils.enumerate;
type
generic TBidirectionalIterator<V, Iterator> = class詳細については、Wikiページをご覧ください。
Tenumeratorクラスは、TforwarditeratorまたはTbidirectionAliteratorに基づいてイテレーターを持っているものを反復可能なオブジェクトに追加し、Python言語のようにそれ(列挙オブジェクト)を返します。
uses
utils.enumerate;
type
generic TEnumerator<V, Iterator> = class詳細については、Wikiページをご覧ください。
TFILTERENUMERATORクラスは、UniaryFunctorによってフィルタリング列挙器を提供します。
uses
utils.enumerate, utils.functor;
type
generic TFilterEnumerator<V, Iterator, Functor> = classfunctorはutils.functor.tunaryfunctorインターフェイスに基づいており、アイテムの値のフィルタリングに使用されます。
詳細については、Wikiページをご覧ください。
バイナリ関数を使用して累積累積値(Functor引数を介して指定)。
uses
utils.functional, utils.functor;
type
generic TAccumulate<V, Iterator, Functor> = classfunctorはutils.functor.tbinaryfunctorインターフェイスに基づいており、結果値を蓄積するために使用されます。
詳細については、Wikiページをご覧ください。
指定されたファンサーを、特定の反復オブジェクトの各アイテムに適用するTMAP)。
uses
utils.functional, utils.functor;
type
generic TMap<V, Iterator, Functor> = classFunctorはUtils.functor.tunaryfunctorインターフェイスに基づいており、アイテムの値を変更するために使用されます。
詳細については、Wikiページをご覧ください。