With exactly one week to go until the release of the first edition of Dart for Hipsters, the Dart team released a new version of the language specification. To this, I can only say, guys, seriously, we definitely need better coordination for the second edition. I kid!
Reading through the spec, I do not see much that requires changes to the beta version of the book. To be sure, method cascades would require a new section, possibly even a new chapter, but they are not yet baked, let alone implemented.
One thing that does bear investigation is lazy evaluation of static variables. I have been bit by "must be a compile time constant" enough to see it in my sleep. Yes, my dreams are just that boring—but (hopefully) no more!
For example, in Hipster MVC's pushState manager,
HipsterHistory
, I cannot simply initialize the routes
class variable like so:class HipsterHistory { static List routes = []; // ... }The empty array to which I am attempting to assign
routes
is not a compile time constant, so I would get a compile time error.Instead, I have needed to make a pretend
routes
static variable via a getter. That getter can initialize a private _routes
class variable if needed and return the current value:class HipsterHistory { static List _routes; static get routes() { if (_routes == null) _routes = []; return _routes; } // ... }That, of course, it is a silly amount of work to go through for what ought to be a one-liner. Hence the updated spec. I download the latest copy of Dartium and give the simpler version a go. Sadly, I still get the same error:
Ah well, at least I know that help is on the way. I think for first edition purposes, I will likely describe lazy evaluation as the One True Way™, but with an aside briefly describing the old behavior.
Day #235
No comments:
Post a Comment