digitalmars.D - Nullable with auto-allocation on access
- Timothee Cour via Digitalmars-d (31/31) Jun 17 2017 Is there a construct similar to Nullable that would auto-allocate upon
Is there a construct similar to Nullable that would auto-allocate upon access (set/get) if isNull is true? Use case: https://github.com/msoucy/dproto/issues/117 [getters and setters should work without calling `init` on Nullable fields, as in copied inline for easy reference: ``` in C++ we can write: message MyMessage{ optional Foo foo=1; } message Foo{ optional Bar bar=1; } message Bar{ optional string baz=1; } MyMessage a; a.mutable_foo()->mutable_bar()->set_baz("hello"); in dproto we need to call init on the intermediate fields foo, bar auto initialize_nullable(T:Nullable!U, U)(ref T a){ a=U.init; } MyMessage a; a.foo.initialize_nullable; a.foo.bar.initialize_nullable; a.foo.bar.baz="hello"; Would be nice to not have to call init and allow this: MyMessage a; a.foo.bar.baz="hello"; I believe this could be implemented via a modification of Nullable that would call init on 1st access to a setter. ```
Jun 17 2017