Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

our \NOW = DateTime.now; #4504

Open p6rt opened 9 years ago

p6rt commented 9 years ago

Migrated from rt.perl.org#125975 (status was 'open')

Searchable as RT125975$

p6rt commented 9 years ago

From @dakkar

Consider this snippet​:

  constant NOW = DateTime.now;

That is a BEGIN-time declaration + initialisation. C\ will contain the time of compilation.

On the other hand​:

  my \NOW = DateTime.now;

does run-time initialisation, so you get a different time at each run.

There does not seem to be a nice way of having a C\ with an INIT-time initialiser​:

  constant NOW = INIT DateTime.now;

sets C\ to C\, since a BEGIN time that INIT block has not run.

Is there already a working way to do that? Should there be?

Thanks.

p6rt commented 9 years ago

From @jnthn

On Thu Sep 03 05​:57​:58 2015, dakkar wrote​:

Consider this snippet​:

constant NOW = DateTime.now;

That is a BEGIN-time declaration + initialisation. C\ will contain the time of compilation.

On the other hand​:

my \NOW = DateTime.now;

does run-time initialisation, so you get a different time at each run.

There does not seem to be a nice way of having a C\ with an INIT-time initialiser​:

constant NOW = INIT DateTime.now;

sets C\ to C\, since a BEGIN time that INIT block has not run.

Correct, and there's no sensible way to make that work.

Is there already a working way to do that? Should there be?

Yes, an "our" scoped variable should have its initializer run at our time​:

our \NOW = DateTime.now;

That's not implemented yet, so re-purposing this ticket for implementing that. :-)

p6rt commented 9 years ago

The RT System itself - Status changed from 'new' to 'open'

p6rt commented 6 years ago

From @AlexDaniel

Still NYI (2017.11, HEAD(5929887))

On 2015-09-04 08​:25​:24, jnthn@​jnthn.net wrote​:

On Thu Sep 03 05​:57​:58 2015, dakkar wrote​:

Consider this snippet​:

constant NOW = DateTime.now;

That is a BEGIN-time declaration + initialisation. C\ will contain the time of compilation.

On the other hand​:

my \NOW = DateTime.now;

does run-time initialisation, so you get a different time at each run.

There does not seem to be a nice way of having a C\ with an INIT-time initialiser​:

constant NOW = INIT DateTime.now;

sets C\ to C\, since a BEGIN time that INIT block has not run.

Correct, and there's no sensible way to make that work.

Is there already a working way to do that? Should there be?

Yes, an "our" scoped variable should have its initializer run at our time​:

our \NOW = DateTime.now;

That's not implemented yet, so re-purposing this ticket for implementing that. :-)