Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
February 19, 2016 Duration at runtime | ||||
---|---|---|---|---|
| ||||
I'm confused by the following: import std.stdio; import std.datetime; void main() { string unitType = "seconds"; auto seconds = 1; // auto myDur = dur!(unitType)(seconds); // Error unitType can't be read at compile time. auto myDur = dur!("seconds")(seconds); // Compiles why? } How is seconds able to be read at compile time but unitType cannot? Thanks! |
February 19, 2016 Re: Duration at runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Zekereth | On Friday, 19 February 2016 at 04:08:02 UTC, Zekereth wrote:
> How is seconds able to be read at compile time but unitType cannot?
"seconds" is a literal value that the compiler knows about. unitType is a variable that might change between its declaration and use (it doesn't here, but the compiler doesn't check if it actually does, just if it *can*), so the compiler doesn't allow it.
|
February 19, 2016 Re: Duration at runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Friday, 19 February 2016 at 04:16:23 UTC, Adam D. Ruppe wrote:
> On Friday, 19 February 2016 at 04:08:02 UTC, Zekereth wrote:
>> How is seconds able to be read at compile time but unitType cannot?
>
> "seconds" is a literal value that the compiler knows about. unitType is a variable that might change between its declaration and use (it doesn't here, but the compiler doesn't check if it actually does, just if it *can*), so the compiler doesn't allow it.
Thanks a lot Adam!
So is there a way around this?. I want duration to be configurable at runtime.
|
February 19, 2016 Re: Duration at runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Zekereth | On Friday, 19 February 2016 at 04:21:43 UTC, Zekereth wrote:
> On Friday, 19 February 2016 at 04:16:23 UTC, Adam D. Ruppe wrote:
>> On Friday, 19 February 2016 at 04:08:02 UTC, Zekereth wrote:
>>> How is seconds able to be read at compile time but unitType cannot?
>>
>> "seconds" is a literal value that the compiler knows about. unitType is a variable that might change between its declaration and use (it doesn't here, but the compiler doesn't check if it actually does, just if it *can*), so the compiler doesn't allow it.
>
> Thanks a lot Adam!
>
> So is there a way around this?. I want duration to be configurable at runtime.
Never mind I found a better solution to my problem by storing a Duration instead of the unitType. Works just fine.
Thanks a lot I appreciate your help!
|
February 19, 2016 Re: Duration at runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Zekereth | On 2/18/16 11:36 PM, Zekereth wrote:
> On Friday, 19 February 2016 at 04:21:43 UTC, Zekereth wrote:
>> On Friday, 19 February 2016 at 04:16:23 UTC, Adam D. Ruppe wrote:
>>> On Friday, 19 February 2016 at 04:08:02 UTC, Zekereth wrote:
>>>> How is seconds able to be read at compile time but unitType cannot?
>>>
>>> "seconds" is a literal value that the compiler knows about. unitType
>>> is a variable that might change between its declaration and use (it
>>> doesn't here, but the compiler doesn't check if it actually does,
>>> just if it *can*), so the compiler doesn't allow it.
>>
>> Thanks a lot Adam!
>>
>> So is there a way around this?. I want duration to be configurable at
>> runtime.
>
> Never mind I found a better solution to my problem by storing a Duration
> instead of the unitType. Works just fine.
>
> Thanks a lot I appreciate your help!
Because it might help with some future issue:
Instead of auto, declare the unitType as immutable or enum:
immutable unitType = "seconds";
enum unitType = "seconds";
Then the compiler knows it won't change.
-Steve
|
Copyright © 1999-2021 by the D Language Foundation