Difference between revisions of "Nullable types"
From Lazarus wiki
Jump to navigationJump to search (reference Nil) |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Nullable types}} | ||
+ | |||
Nullable types are types which can have no value (can be unassigned). | Nullable types are types which can have no value (can be unassigned). | ||
− | One such type in Pascal is Pointer type which can have [[Nil|<syntaxhighlight lang="pascal" | + | One such type in Pascal is [[Pointer]] type which can have [[Nil|<syntaxhighlight lang="pascal" inline>nil</syntaxhighlight>]] value which means that it isn't assigned to any specific address. |
− | Same behavior can be implemented using generic types and advanced records with operator overloading. | + | Same behavior can be implemented using [[Generics|generic types]] and advanced records with [[Operator overloading|operator overloading]]. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | The Nullable unit is part of FPC since 3.2.2 and its code can be seen in the GitLab repository: [https://gitlab.com/freepascal.org/fpc/source/-/blob/main/packages/rtl-objpas/src/inc/nullable.pp nullable.pp]. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Then you can define nullable types like: | Then you can define nullable types like: | ||
Line 71: | Line 13: | ||
NullableString = TNullable<string>; | NullableString = TNullable<string>; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | == See also == | ||
+ | * [[How to use nullable types]] | ||
+ | |||
+ | The standard nullable type in Object Pascal is Variant. | ||
+ | * [[Variant]] | ||
== External links == | == External links == | ||
+ | * [https://gitlab.com/freepascal.org/fpc/source/-/blob/main/packages/rtl-objpas/src/inc/nullable.pp FPC GitLab Repository nullable.pp] | ||
* [https://www.arbinada.com/en/node/1439 Nullables in Free Pascal and Delphi] | * [https://www.arbinada.com/en/node/1439 Nullables in Free Pascal and Delphi] | ||
− | |||
− |
Latest revision as of 17:19, 6 August 2022
│
English (en) │
suomi (fi) │
Nullable types are types which can have no value (can be unassigned).
One such type in Pascal is Pointer type which can have nil
value which means that it isn't assigned to any specific address.
Same behavior can be implemented using generic types and advanced records with operator overloading.
The Nullable unit is part of FPC since 3.2.2 and its code can be seen in the GitLab repository: nullable.pp.
Then you can define nullable types like:
NullableChar = TNullable<Char>;
NullableInteger = TNullable<Integer>;
NullableString = TNullable<string>;
See also
The standard nullable type in Object Pascal is Variant.