Ho il seguente codice. Sembra brutto, se il valore è uguale a uno dei seguenti valori, allora fai qualcosa.alternativa da verificare, se un valore è in un set
var
Value: Word;
begin
Value := 30000;
if (Value = 30000) or (Value = 40000) or (Value = 1) then
do_something;
end;
voglio refactoring del codice come segue:
var
Value: Word;
begin
Value := 30000;
if (Value in [1, 30000, 40000]) then // Does not work
do_something;
end;
Tuttavia, il codice refactoring non funziona. Presumo che un set valido in Delphi accetta solo elementi con tipo byte. Se esiste una valida alternativa al refactoring del mio codice originale (oltre all'utilizzo di case)?
grazie, ma come ho notato nella mia domanda, voglio un'altra alternativa. Perché usare l'interruttore ... caso per una tale logica non sembra normale – stanleyxu2005
@ stanleyxu2005. È probabilmente il più efficiente. E, inoltre, quando inizi a scrivere cose come queste, ci sono buone probabilità che tu possa finire per dover aggiungere un altro o anche un altro se condizione 'se valore in [.] Fai bla else se value in [..] fai blabla else do blablabla'. In tal caso, il caso è la scelta più ovvia. –
Dopo un giorno di attesa per le risposte, sono d'accordo che l'uso di switch ... case è la soluzione più accettabile. – stanleyxu2005