www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Neater enum + version

reply Vladimirs Nordholm <v vladde.net> writes:
Currently I have something like

     version (Posix)
     {
         enum foo = "bar";
     }
     else
     {
         enum foo = "baz";
     }

Is there anyway to make it "neater"? Maybe something in one line:

     enum foo = version (Posix) { "posix" } : { "other" } ;
Nov 18 2018
parent reply Neia Neutuladh <neia ikeran.org> writes:
On Sun, 18 Nov 2018 17:47:07 +0000, Vladimirs Nordholm wrote:
 Is there anyway to make it "neater"? Maybe something in one line:
 
      enum foo = version (Posix) { "posix" } : { "other" } ;
If you're doing it often: T ifPosix(T)(T a, T b) { version (Posix) return a; else return b; } enum foo = ifPosix("posix", "other"); If it's a one-off thing, though, there's not much you can do.
Nov 18 2018
next sibling parent Vladimirs Nordholm <v vladde.net> writes:
On Sunday, 18 November 2018 at 17:52:21 UTC, Neia Neutuladh wrote:
 On Sun, 18 Nov 2018 17:47:07 +0000, Vladimirs Nordholm wrote:
 Is there anyway to make it "neater"? Maybe something in one 
 line:
 
      enum foo = version (Posix) { "posix" } : { "other" } ;
If you're doing it often: T ifPosix(T)(T a, T b) { version (Posix) return a; else return b; } enum foo = ifPosix("posix", "other"); If it's a one-off thing, though, there's not much you can do.
Ah. Thank you for the example, might use that some other time. Thanks :)
Nov 18 2018
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2018-11-18 18:52, Neia Neutuladh wrote:
 On Sun, 18 Nov 2018 17:47:07 +0000, Vladimirs Nordholm wrote:
 Is there anyway to make it "neater"? Maybe something in one line:

       enum foo = version (Posix) { "posix" } : { "other" } ;
If you're doing it often: T ifPosix(T)(T a, T b) { version (Posix) return a; else return b; } enum foo = ifPosix("posix", "other"); If it's a one-off thing, though, there's not much you can do.
This can be generalized by passing in the version identifier as a string and do a string mixin. -- /Jacob Carlborg
Nov 18 2018