Tuyệt đối không ác. Trên thực tế, nó thuần túy , và nếu không thì không.
Trong các ngôn ngữ chức năng như Haskell, F #, ML, v.v., đó là câu lệnh if-then-other được coi là xấu xa.
Lý do cho điều này là bất kỳ "hành động" nào giống như một câu lệnh if-then-other bắt buộc yêu cầu bạn tách một khai báo biến khỏi định nghĩa của nó và đưa trạng thái vào hàm của bạn.
Chẳng hạn, trong đoạn mã sau:
const var x = n % 3 == 1
? Parity.Even
: Parity.Odd;
so với
Parity x;
if (n % 3 == 1)
x = Parity.Even;
else
x = Parity.Odd;
Cái đầu tiên có hai ưu điểm ngoài việc ngắn hơn:
x
là một hằng số, và do đó cung cấp ít cơ hội giới thiệu các lỗi hơn và có khả năng có thể được tối ưu hóa theo cách thứ hai không bao giờ có thể xảy ra.
- Kiểu được làm rõ bởi biểu thức, vì vậy trình biên dịch có thể dễ dàng suy ra
x
cần phải có kiểu Parity
.
Một cách khó hiểu, trong các ngôn ngữ chức năng, toán tử ternary thường được gọi là if-then-other. Trong Haskell, bạn có thể nói x = if n mod 3 == 1 then Odd else Even
.