Użyłem tego scenariusza wiele razy w prawie wszystkich moich projektach, kiedy robię jakąś konwersję danych, jeśli chodzi o booleans, trochę się gubię, jeśli chodzi o upraszczanie. To oświadczenie poniżej wystaje jak bolesny kciuk po całym moim kodzie:Czy istnieje łatwiejszy sposób na konwersję wartości logicznych?
if BoolVal then
StrVal:= 'True'
else
StrVal:= 'False';
Zastanawiam się, czy istnieje łatwiejszy sposób przeprowadzenia tej oceny? Być może jakieś użycie oświadczenia Case
, o którym nie wiem? Moja aktualna implementacja jest bardziej skomplikowana niż tylko StrVal
, ale polega na zwrocie dwóch różnych wartości w zależności od tego, czy jest to prawda, czy fałsz. Na przykład, oto prawdziwy kod ...
if fsBold in Can.Font.Style then
ConvertTo(AddSomeOtherText + 'True')
else
ConvertTo(AddSomeOtherText + 'False');
To tylko podkreślenie, jak prosto mam nadzieję. Zastanawiam się, czy mogę zrobić coś na wzór tego:
ConvertTo(AddSomeOtherText + BoolToStrCase((fsBold in Can.Font.Style), 'True', 'False'));
Jestem pewien, że nie jest prawdziwy poleceń, ale szukam dla tego typu uproszczenia w jednej linii.
OK, który nie był tak naprawdę "prawdziwym" kodem, ale jako przykład nienawidzę powielania kodu dla każdej oceny boolowskiej. –
Czy twój język obsługuje operatora trójskładnikowego? StrVal =: BoolVal?"Prawda": "Fałsz" – vgoff
O dziwo, widzę, że dokładne poprzednie pytanie dotyczące StackOverflow związane z Delphi jest również pytaniem, jak zrobić proste porównanie Boole'a. Różne pytania całkowicie z różnymi odpowiedziami, ale obaj z powrotem do siebie ... –