Ask HN: Why golang doesn't have ternary operator?
1–6 of 6 posts
Re: Ask HN: Why golang doesn't have ternary operator?
#2People seem to try to write their code as compact as possible, not realizing that they usually only write a piece of code once, but they and others will have to decipher and make sense of it a dozen times in the near future.
Re: Ask HN: Why golang doesn't have ternary operator?
#3A fairly short answer: code readability. People seem to try to write their code as compact as possible, not realizing that they usually only write a piece of code once, but they and others will have to decipher and make sense of it a dozen times in the near future.
Re: Ask HN: Why golang doesn't have ternary operator?
#4A fairly short answer: code readability. People seem to try to write their code as compact as possible, not realizing that they usually only write a piece of code once, but they and others will have to decipher and make sense of it a dozen times in the near future.
I agree, when the logic is very complicated to be represented in a line of code.
I have no idea why GoLang doesn't have conditional expressions.
I find a conditional expression to be much easier to parse than if-else statements.
If it's too hard to read, then why is LISP written almost totally as expressions, and is still considered viable?
a ? b ? c : d : e
is much easier for me to read and understand than if (a) {
if (b) {
r = c;
} else {
r = d;
}
} else {
r = e;
}
GoLang is supposed to be designed to remove "boilerplate code" and reduce code size, so I don't know why it doesn't have conditional expressions.Without conditional expressions, C++11 (but not C++14 and later) constexpr functions wouldn't be Turing-complete.
Re: Ask HN: Why golang doesn't have ternary operator?
#5Earlier quoted context omitted.
I agree, when the logic is very complicated to be represented in a line of code.
(I use "conditional expression" in place of "ternary operator" here.) I have no idea why GoLang doesn't have conditional expressions. I find a conditional expression to be much easier to parse than if-else statements. If it's too hard to read, then why is LISP written almost totally as expressions, and is still considered viable? a ? b ? c : d : e is much easier for me to read and understand than if (a) { if (b) { r…
x = a ? b : c;
Oops; that assigns x = a, and tests it. Not if that = is that of an initializer, though: int x = a ? : b : c;
so now we have an expression that changes meaning if we have to split the initialization off into an assignment.You're often better off if you put it behind a macro:
#define IF(X, Y, Z) ((X) ? (Y) : (Z))
In C coding, a lot of ternary action happens behind the curtain of preprocessing, where expression is almost fully parenthesized.Re: Ask HN: Why golang doesn't have ternary operator?
#6Earlier quoted context omitted.
(I use "conditional expression" in place of "ternary operator" here.) I have no idea why GoLang doesn't have conditional expressions. I find a conditional expression to be much easier to parse than if-else statements. If it's too hard to read, then why is LISP written almost totally as expressions, and is still considered viable? a ? b ? c : d : e is much easier for me to read and understand than if (a) { if (b) { r…
Lisp is unambiguous, whereas: x = a ? b : c; Oops; that assigns x = a, and tests it. Not if that = is that of an initializer, though: int x = a ? : b : c; so now we have an expression that changes meaning if we have to split the initialization off into an assignment. You're often better off if you put it behind a macro: #define IF(X, Y, Z) ((X) ? (Y) : (Z)) In C coding, a lot of ternary action happens behind the curt…
CPP macros is red herring.