Thread overview | |||||
---|---|---|---|---|---|
|
July 19, 2013 Pass symbol to template? | ||||
---|---|---|---|---|
| ||||
I have some templates to help initialize things, like a property getter and setter. mixin(Property!("Name", int)); creates a property named Name with type int. I'd like to be able to call it like mixin(Property!(Name, int)); (Name is a symbol but undefined at the mixin site(since it will be defined once the mixin is done) I doubt this is possible in any way because it requires the compiler to allow such undefined symbols but would be nice... e.g., template Property(lazy alias name, type) { ... } but who knows, maybe I'm wrong and there is some way to do this? |
July 19, 2013 Re: Pass symbol to template? | ||||
---|---|---|---|---|
| ||||
Posted in reply to JS | On Friday, 19 July 2013 at 08:08:25 UTC, JS wrote:
> I have some templates to help initialize things, like a property getter and setter.
>
> mixin(Property!("Name", int));
>
> creates a property named Name with type int.
>
> I'd like to be able to call it like
>
> mixin(Property!(Name, int));
>
> (Name is a symbol but undefined at the mixin site(since it will be defined once the mixin is done)
>
> I doubt this is possible in any way because it requires the compiler to allow such undefined symbols but would be nice...
>
> e.g.,
>
> template Property(lazy alias name, type) { ... }
>
> but who knows, maybe I'm wrong and there is some way to do this?
There isn't a way AFAIK
You can use the q{...} syntax though, which is particularly nice for passing large code strings.
|
July 19, 2013 Re: Pass symbol to template? | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin | On Friday, 19 July 2013 at 08:40:09 UTC, John Colvin wrote:
> On Friday, 19 July 2013 at 08:08:25 UTC, JS wrote:
>> I have some templates to help initialize things, like a property getter and setter.
>>
>> mixin(Property!("Name", int));
>>
>> creates a property named Name with type int.
>>
>> I'd like to be able to call it like
>>
>> mixin(Property!(Name, int));
>>
>> (Name is a symbol but undefined at the mixin site(since it will be defined once the mixin is done)
>>
>> I doubt this is possible in any way because it requires the compiler to allow such undefined symbols but would be nice...
>>
>> e.g.,
>>
>> template Property(lazy alias name, type) { ... }
>>
>> but who knows, maybe I'm wrong and there is some way to do this?
>
> There isn't a way AFAIK
>
> You can use the q{...} syntax though, which is particularly nice for passing large code strings.
I'm just passing short string literals to represent variable names... It's not a huge deal but I wanted to avoid the quotes if I could(since they serve no real purpose).
|
Copyright © 1999-2021 by the D Language Foundation