DB ORM
kennytm
kennytm at gmail.com
Fri Aug 12 07:39:02 PDT 2011
zhang <bitworld at qq.com> wrote:
>> Graham Fawcett wrote.
>>> On Thu, 11 Aug 2011 20:10:15 +0800, zhang wrote:
>>>
>>>>>> I think D needs user defined attributes first.
>>>>
>>>> About attribute, here is an example:
>>>>
>>>> ....
>>>>
>>>> There is a problem that is D's basic type is not nullable. In C#,
>>>> the nullable integer type can be defined as "Int?" or
>>>> "Nullable<int>".
>>>
>>> You don't need attributes for that: you can just define a "struct
>>> Nullable(T)" that wraps the value, and provides a way to express a
>>> null value.
>>>
>>> struct Person {
>>> int ID; // required
>>> Nullable!int age; // optional
>>> ...
>>> }
>>>
>>> void foo(Person p) {
>>> if (p.age.isNull) ...
>>> else writeln(p.age + 100);
>>> }
>>>
>>> Graham
>>
>> Alternatively you just use a class to wrap the value:
>>
>> template Nullable(T){
>> static if(is(T == class)) alias T Nullable;
>> else class Nullable{T v; alias v this;}
>> }
>>
>>
>> The benefit of this approach is that you don't have to invent new ways to test for
>> null values.
>
> That's it. So, the nullable basic type is not a problem. Thanks.
> ----------
> Zhang <bitworld at qq.com>
There used to be std.typecons.Nullable, but was disabled. Can you please
check if there's any improvements to
https://github.com/D-Programming-Language/phobos/pull/153?
More information about the Digitalmars-d
mailing list