what is special about unittest constants

Lubos Pintes lubos.pintes at gmail.com
Mon Feb 18 08:59:38 PST 2013


Yesterday I solved similar problem by using enum.
enum GameInfo[string] games=[
...
];
Dňa 8. 2. 2013 21:21 anonymous  wrote / napísal(a):
> On Friday, 8 February 2013 at 20:12:41 UTC, Dan wrote:
>> This constant in a module causes a compilation error of the
>> "non-constant expression" variety.
>>
>> DEFINITION 1
>>   const(AssetProjectionMap) SavingsGrowth2013 = [
>>     AssetReturnType.Interest :
>>     RateCurve([DateRate(Date.min, CcRate(0.007))]),
>>   ];
>>
>> The fix that addresses this error at module level is:
>>
>> DEFINITION 2
>>
>> const(AssetProjectionMap) SavingsGrowth2013;
>> static this() {
>>   SavingsGrowth2013 = [
>>     AssetReturnType.Interest :
>>     RateCurve([DateRate(Date.min, CcRate(0.007))]),
>>   ];
>> }
>>
>>
>> However, the same constant, when defined in a unittest block works
>> with DEFINITION 1. What is the reason for the difference between
>> unittest constants and module constants?
>>
>> Thanks,
>> Dan
>
> unittest blocks are evaluated at run time, just like your DEFINITION 2,
> and unlike your DEFINITION 1 which would be evaluated at compile time.



More information about the Digitalmars-d-learn mailing list