On Saturday, 19 November 2016 at 06:58:38 UTC, Era Scarecrow
wrote:
On Saturday, 19 November 2016 at 04:54:22 UTC, Xinok wrote:
On Saturday, 19 November 2016 at 03:52:02 UTC, Ryan wrote:
Why do I see double `not` operators sometimes in D code? An
example it the last post of this thread.
http://forum.dlang.org/thread/ktlpnikvdwgbvfaam...@forum.dlang.org
import core.sys.windows.windows : GetConsoleCP;
bool hasConsole = !!GetConsoleCP();
Thanks.
It's a more concise way of writing:
GetConsoleCP() != 0
You can do this in C/C++ as well (and presumably some other
languages).
Hmmm... thinking about it, it does make perfect sense. The
first ! converts it to bool, the other inverts it back to it's
positive/negative state.
Although it's a combination of logic I wouldn't have through
of unless I saw it. But testing the result on any number
(float, double or real) won't be precise and would take far
longer (and more complicated) using another method.
It's a very common practice in any language that uses
truthy/falsey, especially seen a lot in Javascript.
Generally it's not necessary unless you want to be explicit about
checking upon a bool.
Ex.
auto hasModel = !!view.model;
if (hasModel) {
...
}
Could very well just be
auto model = view.model;
if (model) {
}