In C/Java/VB kent men iets als een IIf (Voorwaarde % TruePart ? FalsePart, o.i.d.)
Nou heb ik deze ook in Delphi gemaakt maar ik kon deze op 2 manieren implementeren met ieder z'n eigen voor- en nadelen.
Methode A: Variants
Deze methode heeft als voordeel dat er voor de programmeur niet gecast hoeft te worden maar lijkt me behoorlijk traag aangezien 128-bits(?) variabelen worden gebruikt. Tevens zullen niet alle soorten variabelen naar Variants (bijv. Objecten) gecast kunnen worden.
Methode 2: pointers
Voordeel is dat er veel minder door de app. gecast hoeft te worden en er geen trage variants worden gebruikt. Tevens is iedere variabele te gebruiken. Nadeel is wel dat de programmeur veel meer moet casten.
Zijn er nog meer/betere manieren?
Nou heb ik deze ook in Delphi gemaakt maar ik kon deze op 2 manieren implementeren met ieder z'n eigen voor- en nadelen.
Methode A: Variants
code:
1
2
3
4
5
6
7
8
9
10
11
12
| function IIf(const Condition: Boolean; const TruePart, FalsePart: Variant): Variant;
begin
if Condition then
Result := TruePart
Else
Result := FalsePart;
end;
procedure Test;
begin
ShowMessage(IIf(1=2, 'Komt niet tevoorschijn', 'Klopt als een zwerende vinger'));
end; |
Deze methode heeft als voordeel dat er voor de programmeur niet gecast hoeft te worden maar lijkt me behoorlijk traag aangezien 128-bits(?) variabelen worden gebruikt. Tevens zullen niet alle soorten variabelen naar Variants (bijv. Objecten) gecast kunnen worden.
Methode 2: pointers
code:
1
2
3
4
5
6
7
8
9
10
11
12
| function IIf(const Condition: Boolean; const TruePart, FalsePart: Pointer): Pointer;
begin
if Condition then
Result:=TruePart
Else
Result:=FalsePart;
end;
procedure Test;
begin
ShowMessage(PChar(IIf(2=2, PChar('Klopt als een zwerende vinger'), PChar('Foutje'))));
end; |
Voordeel is dat er veel minder door de app. gecast hoeft te worden en er geen trage variants worden gebruikt. Tevens is iedere variabele te gebruiken. Nadeel is wel dat de programmeur veel meer moet casten.
Zijn er nog meer/betere manieren?