Das hat eigentlich ganz andere Gründe.
Ah ja, das hatte ich mir schon gedacht.
Danke, das ist ein sehr schönes Beispiel
Aber trotzdem, ist es am Ende nicht fast das gleiche Ergebnis wie:
Delphi-Quellcode:
// Handle specific rating
case Rating
of
//Positive rating
TRating.Perfect: ...;
TRating.OK: ...;
TRating.Acceptable: ...;
//Negative rating
TRating.NotGoodEnough: ...;
TRating.Bad: ...;
TRating.TotalShit: ...;
else
HandleIncompleteCase(Rating);
//<== OK, hier kann man nicht genau in Positive/Negative unterscheiden
// Aber Du kommst ja trotzdem auf den richtigen, "falschen" case.
// Wenn das "if x in" nicht passt, dann muss es auch nicht für "case x of" passen.
end;
type
cRatingPositive = [TRating.Perfect..TRating.Acceptable];
// Wenn man es so definieren könnte, dann vielleicht.
So richtig sehe ich den Mehrwert noch nicht.
Ist das dann nicht eher ein Fall für ein Enum Set, mit allen seinen mathematischen Möglichkeiten?