Delphi-équivalent de l'opérateur ternaire de C#? [dupliquer]
possibilité de dupliquer:
y a-t-il, ou y aura-t-il un opérateur conditionnel à Delphi?
je comprends que Delphi n'a pas l'opérateur ternaire comme dans C#.
c'est-à-dire ?:
alors comment représenter au mieux cette fonction Appel? Quel est la méthode la plus sûre?
serait très agréable s'il y a y a-t-il un code qui peut être utilisé au lieu d'écrire une fonction séparée? Dans la négative, Quelle est la représentation de code la plus efficace et/ou la plus nette?
3 réponses
bien sûr que vous pouvez utiliser
IfThen(SomeBooleanExpression, IfTrueReturnValue, IfFalseReturnValue)
où les valeurs de retour sont numériques ( uses Math
) ou chaîne ( uses StrUtils
). Mais notez que ceci évaluera les deux arguments dans tous les cas -- il n'y a pas d'évaluation paresseuse, donc ce n'est pas aussi efficace que l'opérateur ?:
en C#, où seul l'opérande droit est évalué.
Si vous ne pouvez pas faire
y := IfThen(x <> 0, 1/x, 0)
La meilleure chose est de s'en tenir à un ordinaire
if x <> 0 then y := 1/x else y := 0;
la plus proche est:
if (condition) then <staement> else <statement>;
J'espère que ça aidera. Pour autant que je me souvienne, il n'y a pas d'opérateur à Delphi.
Essayez le Forum de Jedi:
function Iff(const Condition: Boolean; const TruePart: string; const FalsePart: string): string; overload;
function Iff(const Condition: Boolean; const TruePart: Char; const FalsePart: Char): Char; overload;
function Iff(const Condition: Boolean; const TruePart: Byte; const FalsePart: Byte): Byte; overload;
function Iff(const Condition: Boolean; const TruePart: Integer; const FalsePart: Integer): Integer; overload;
function Iff(const Condition: Boolean; const TruePart: Cardinal; const FalsePart: Cardinal): Cardinal; overload;
function Iff(const Condition: Boolean; const TruePart: Float; const FalsePart: Float): Float; overload;
function Iff(const Condition: Boolean; const TruePart: Boolean; const FalsePart: Boolean): Boolean; overload;
function Iff(const Condition: Boolean; const TruePart: Pointer; const FalsePart: Pointer): Pointer; overload;
function Iff(const Condition: Boolean; const TruePart: Int64; const FalsePart: Int64): Int64; overload;
function Iff(const Condition: Boolean; const TruePart: Variant; const FalsePart: Variant): Variant; overload;