Kesinlikle kötü değil. Aslında, saf ve eğer-o zaman-başka-değil.
Haskell, F #, ML vb. Gibi işlevsel dillerde, kötü sayılan if-then-else ifadeleridir.
Bunun nedeni, zorunlu if-then-else ifadesi gibi herhangi bir "işlem" in, değişken bir bildirimi tanımından ayırmanızı gerektirdiğini ve işlevinize durumu tanıttığını olmasıdır .
Örneğin, aşağıdaki kodda:
const var x = n % 3 == 1
? Parity.Even
: Parity.Odd;
vs.
Parity x;
if (n % 3 == 1)
x = Parity.Even;
else
x = Parity.Odd;
İlki, kısa olmanın yanında iki avantaja sahiptir:
x
bir sabittir ve bu yüzden böcekleri ortaya koyma şansı çok daha azdır ve potansiyel olarak ikincinin asla olamayacağı şekilde optimize edilebilir.
- Tür, ifade ile netleştirilmiştir, bu nedenle derleyici
x
türünün olması gerekmediğini zahmetsizce çıkartabilir Parity
.
Kafa karıştırıcı bir şekilde, işlevsel dillerde, üçlü operatör genellikle if-then-else olarak adlandırılır. Haskell'de söyleyebilirsin x = if n mod 3 == 1 then Odd else Even
.