4 ms·
Cyberferrit said new programmers to the project, not specifically new to the language or programming itself. Working on emulation software I commonly run acros
by joshumax 9y ago
Cyberferrit said new programmers to the project, not specifically new to the language or programming itself.
Working on emulation software I commonly run across snippets such as `res = !!iRegisterVal` which results in some C newbies scratching their heads as to why a useless double negation would be there. But for more seasoned developers its intent can pretty easily recognized...
- CrystalLangUser 9y agoWhy is !! useful? Asking as a ruby programmer.
- asherkin 9y agoIt is a shorthand method of casting to a boolean value - C didn't have a true bool type until "recently" (but did have the concept of truthiness, where true is `is not 0`), so many projects and libraries use `#define TRUE 1`, and #define FALSE 0` or some similar variant. So rather than write `foo ? TRUE : FALSE` or being more explicit `(foo != 0) ? 1 : 0`, you can just do `!!foo`.
- sethrin 9y agoIt's a quick cast to a boolean.
- drusepth 9y agoBecause Ruby doesn't have a to_boolean method. !! is used to convert "truthy" or "falsy" values [0] into true boolean true or false values. For example, def user_signed_in? !!current_user end This returns "true" or "false", instead of a (truthy) User object or a (falsy) nil. [0] https://gist.github.com/jfarmer/2647362 https://gist.github.com/jfarmer/2647362