Using enums as function parameters (in a minimized way)
tcak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Dec 1 05:03:35 PST 2015
On Tuesday, 1 December 2015 at 10:50:04 UTC, Rikki Cattermole
wrote:
> On 01/12/15 11:44 PM, Ozan wrote:
>> Hi
>>
>> Let's say we have an enum like
>>
>> enum SomethingAboutChristmas {
>> SantaClaus,
>> Angel,
>> Tree
>> }
>>
>> and want to use it in a function like
>>
>> void goingChristmas(SomethingAboutChristmas enumvalue)
>>
>> it works fine like following
>>
>> goingChristmas(SomethingAboutChristmas.Tree)
>>
>> I prefer to use a shorter version
>>
>> goingChristmas(Tree)
>>
>> because it's clear (for me), that "Tree" in "goingChristmas()"
>> is an
>> enum of "SomethingAboutChristmas"
>>
>> Is any chance to do this? The DMD-compiler says no.
>>
>> Thanke & Regards, Ozan
>
> If you insist..
> You can also use alias and with statement to emulate this too.
> Or generate it at compile time.
>
> enum SomethingAboutChristmas {
> SantaClaus,
> Angel,
> Tree
> }
>
> enum {
> SantaClaus = SomethingAboutChristmas.SantaClaus,
> Angel = SomethingAboutChristmas.Angel,
> Tree = SomethingAboutChristmas.Tree,
> }
>
> void main() {
> SomethingAboutChristmas foo = Tree;
> }
This is like: Q) I want to write an OS. How? A) Write in
assembly.
What Ozan says is logical. Compiler should assume it in that way
normally. I have thoroughly thought about whether this assumption
would cause problem yet though.
Unfortunately compiler doesn't accept that.
More information about the Digitalmars-d-learn
mailing list