Delayed const variable initialization

Yuxuan Shui via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 13 02:08:13 PDT 2015


On Monday, 13 July 2015 at 09:05:25 UTC, ketmar wrote:
> On Mon, 13 Jul 2015 08:56:05 +0000, Yuxuan Shui wrote:
>
>> On Monday, 13 July 2015 at 07:43:16 UTC, Marc Schütz wrote:
>>> On Monday, 13 July 2015 at 07:11:33 UTC, Yuxuan Shui wrote:
>>>> [...]
>>>
>>> const(A) = condition ? func1() : func2();
>> 
>> Well I should have used a more complex example:
>> 
>> const(A) x;
>> if (condition) {
>>    //Do some really complicated stuff here x = func1(results);
>> } else {
>>    //Here too x = func2(results);
>> }
>
> as i wrote, what you really want is the ability to assign to 
> `const`, which is forbidden in D. initialization of `x` happens 
> at the declaration site: `const(A) x = A.init;`
>
> so, no, the design of `const` will not allow you to assign to 
> consts. remember, it's not c++ const. chances are, you don't 
> need that `const` at all -- as you clearly wants to modify a 
> variable.

No! What I want to do is to assign to 'const' only ONCE. So it is 
basically an initialization.

What I really want is to detach initialization from definition.


More information about the Digitalmars-d-learn mailing list