enum true, or 1

Ali Çehreli acehreli at yahoo.com
Thu Jul 22 03:58:38 UTC 2021


On 7/21/21 8:44 PM, Brian Tiffin wrote:

 > What is the preferred syntax for simple on/off states?

I use std.typecons.Flag. It feels very repetitive but that's what we have:

import std.typecons;

void foo(Flag!"doFilter" doFilter) {
   if (doFilter) {
     // ...
   }
}

bool someCondition;

void main() {
   // Literal values of Flag!"doFilter"
   foo(Yes.doFilter);
   foo(No.doFilter);

   // Assuming we start with an existing 'bool'...
   bool doFilter = someCondition;
   // ... I like this helper (see below):
   foo(flagFromBool!doFilter);
}

template flagFromBool(alias variable) {
   enum flagName = variable.stringof;

   auto flagFromBool() {
     import std.format : format;

     enum expr = format!q{
       return variable ? Yes.%s : No.%s;
     }(flagName, flagName);

     mixin (expr);
   }
}

 > Did I read that
 > D was moving to strictly 1 and 0 literals instead of true/false on/off
 > yes/no?

Walter sees 'bool' as a 1-bit integer type. I can't. :) I cringe 
everytime I see assert(0). To me, it is assert(false); :/

 > If so, is there an idiom for yes/no/maybe  -1,0,1 less/equal/greater?

opCmp's return value has three states:

  < 0
  == 0
  > 0

Ali



More information about the Digitalmars-d-learn mailing list