Mam następujący kod. Wygląda to paskudnie, jeśli wartość równa się jednej z następujących wartości, a następnie coś zrobić.możliwość sprawdzenia, czy wartość jest w zbiorze
var
Value: Word;
begin
Value := 30000;
if (Value = 30000) or (Value = 40000) or (Value = 1) then
do_something;
end;
chcę byłaby kodu w następujący sposób:
var
Value: Word;
begin
Value := 30000;
if (Value in [1, 30000, 40000]) then // Does not work
do_something;
end;
Jednak refactored kod nie działa. Zakładam, że poprawny zestaw w Delphi akceptuje tylko elementy z bajtem typu. Jeśli jest jakaś dobra alternatywa dla refaktoryzacji mojego oryginalnego kodu (poza przypadkiem użycia)?
dziękuję, ale jak zauważyłem w moim pytaniu, chcę innej alternatywy. Ponieważ użycie przełącznika ... przypadek dla takiej logiki nie wygląda normalnie – stanleyxu2005
@ stanleyxu2005. To chyba najbardziej wydajny. A poza tym, kiedy zaczniesz pisać coś takiego, istnieje duża szansa, że będziesz musiał dodać coś innego, a nawet coś innego, jeśli warunek "jeśli wartość w [.] Będzie inna, jeśli wartość w [..] zrobić blabla jeszcze zrobić blablabla'. W takim przypadku sprawa jest oczywistym wyborem. –
Po jednym dniu oczekiwania na odpowiedź, zgadzam się, że użycie switcha ... case jest najbardziej akceptowalnym rozwiązaniem. – stanleyxu2005