int | missing | absent
Antonio
antonio at abrevia.net
Mon Jun 27 23:38:10 UTC 2022
On Monday, 27 June 2022 at 23:05:46 UTC, Steven Schveighoffer
wrote:
> On 6/27/22 9:03 AM, Antonio wrote:
>> On Wednesday, 22 June 2022 at 01:09:22 UTC, Steven
>> Schveighoffer wrote:
>>> On 6/2/22 9:24 AM, bauss wrote:
>>>
>>> I feel it's too loose to make a best effort, and leave the
>>> rest up to initial values, or just ignore possibly important
>>> information during parsing.
>>>
>>
>> May be for your case Steve.
>>
>> I need to represent in a "typed" way complex structures where
>> some properties can be "undefined" (not present in json) and
>> where null value is a valid value (and not the same that
>> "undefined" ones)... basically, the algebraic type Undefined
>> | Null | T
>
> I see what you are saying. What needs to happen is first, you
> need a type wrapper that does this, which defaults to
> undefined. Then mark it optional so it's OK if it doesn't
> appear. Then only if the field is not present will it be marked
> as undefined.
>
> It may even be useful to make the type wrapper itself always
> optional, rather than having to mark it optional.
>
Exactly.
This issue/example in vibe-d treats about this solution and the
annoying change of behavior treating "null" when @optional
attribute is present:
https://github.com/vibe-d/vibe.d/issues/2673
The code is a "simplification" of something more complex (Special
wrappers for **Null | T**, **Undefined | T** and **Undefined |
Null | T** with some functional stuff for match! and null-safe
access (well, trying to: It's really complex and I'm not enought
experienced).
I Tried to base my solution in SumType, but I didn't know how to
add the required fromRepresentation/toRepresentation methods for
custom serialization/deserialization...
More information about the Digitalmars-d-learn
mailing list