Le mardi 09 février 2016 à 20:28 -0800, Michael Landis a écrit :
> missed a paren above (for the people that are going to past the code into a 
> shell and try it out) - something that I am not doing.  Still, this is closer:
> 
> # wishful thinking...
> using Dates;
> leapDay = isleapyear(yr) ? Date(yr,2,29) : nothing
> if ! leapDay
>   doy = dayofyear( leapDay )
>   ...   clean and concise (thought that was the point), but we get
> 
> leapDay = isleapyear (yr)?  Nullable {Date} (Date (yr, 2:29)): Nullable 
> {Date} ()
> if ! isnull( leapDay )
>   doy = dayofyear( get(leapDay) )
First, you don't need to specify {Date} when passing a value, as the
type can be inferred:
leapDay = isleapyear(yr) ? Nullable(Date(yr, 2:29)) : Nullable{Date}()

Note that you can also rely on implicit conversion to write this as:
leapDay::Nullable{Date} = isleapyear(yr) ? Date(yr, 2:29) : nothing

My not-so-secret dream is that you would be able to write this like in
C# and Swift as:
leapDay::Date? = isleapyear(yr) ? Date(yr, 2:29) : nothing


Then, regarding the if block, writing leapDay != nothing or
!isnull(leapDay) is the same IMHO. What's a bit annoying is the call to
get(). Again, I wish we would be allowed to write leapDay? instead of
get(leapDay). Other than that, one could easily write a macro similar
to what Joshua proposes in his post. Let us know if you'd find it
useful.


Regards


> On Tue, Feb 9, 2016 at 8:22 PM, Michael Landis  wrote:
> > # wishful thinking...
> > using Dates;
> > leapDay = isleapyear(yr) ? Date(yr,2,29) : nothing
> > if ! leapDay
> >   dow = dayofyear( leapDay )
> >   ...   clean and concise (thought that was the point), but we get
> > 
> > leapDay = isleapyear(yr) ? Nullable{Date}( Date(yr,2,29) : Nullable{Date}()
> > if ! isnull( leapDay )
> >   dow = dayofyear( get(leapDay) )
> >   ...
> > 
> > If I am dumb enough to forget to check for a null date, I deserve the 
> > exception - the code would be wrong.  Making me type two or three times as 
> > many characters, obscuring what is actually going on, ... all to eliminate 
> > NullPointerExceptions?  I have to write exception free code anyway, so all 
> > I have 'gained' is a lot of superfluous verbosity.  I'm going to side with 
> > salience over verbosity every time.  The type safe argument just doesn't 
> > sell me, sorry.
> > 

Reply via email to