while nullable booleans make sense when you are talking about data
storage I don't think they make sense in one of your general purpose
programming constructs. For example, if boolean could be null, what
does the following code mean?
var b:Boolean = null;
var t:Boolean = false;
if(b) {
println("true");
} else {
println("false");
if(b == t) {
println("really false");
}
}
On Sep 8, 2009, at 4:35 PM, Casper Bang wrote:
>
> Have you checked out Scala? They have several variations of Null,
> null, nil, Nothing, None and perhaps more that I am unaware of. And in
> C# there's language support for the notion of a Nullable, basically
> automatic wrapper classes in the form of something like:
>
> struct Nullable<T>{
> public bool hasValue;
> public T Value;
> }
>
> This means you don't have to overload the meaning of null, makes it
> possible to use primitive types as well and a lot more efficient than
> boxing:
>
> int? x = null;
> int y = null // Not allowed
>
> /Casper
>
> On 9 Sep., 00:21, Rob Wilson - BabyDuke JUG <[email protected]> wrote:
>> These were great posts - thanks guys.
>>
>> It's interesting that you mention databases in relation to nulls,
>> because this is where I've historically had to deal with null
>> Booleans
>> and suchlike. Usually it's as you describe - the entries are
>> nullable
>> and therefore I need to do something different in that scenario.
>>
>> I guess I have got used to that and perhaps have a bad habbit of
>> setting objects to null to indicate some state - rather than
>> introduce
>> another variable, for example I might have an array of 100 integers
>> and rather than loop through them and setting a boolean to indicate
>> something for each, I might null any integers that were invalid, hey-
>> presto, extra state, same number of objects...
>>
>> Now I can change the way I do some of that programming, but I don't
>> think I can change the fact that some of my data will be null - in
>> fact in my latest project I want to enable the user to enter as
>> little
>> as they want - but I don't want the booleans to be treated as false
>> or
>> numbers as 0, they are not provided and therefore should be null.
>>
>> I don't think anyone has suggested an ideal solution to this yet?
>>
>> Cheers again!
>> Rob.
>>
>> On Sep 8, 7:00 pm, Casper Bang <[email protected]> wrote:
>>
>>> Boolean is really just an Enum that can be True and False isn't it?
>>> I'm guessing a modern day version of Java would've implemented
>>> them as
>>> such. Then it would be no problem representing a tri-state, quad-
>>> state
>>> or whatever.
>>> The problem with null is that we end up with so much testing which
>>> obscures the essential parts of our code. It's actually much same
>>> debate going on in the DBMS world, with a better excuse though since
>>> this is how you denote an empty set in this relational model.
>>
>>> /Casper
>>
>>> On 8 Sep., 19:13, Jess Holle <[email protected]> wrote:
>>
>>>> I've always found the whole endless debate over "null" treatment
>>>> that
>>>> I've seen here and elsewhere odd.
>>
>>>> In databases most everything is nullable unless explicitly stated
>>>> otherwise -- and there's good reason for this. There are really
>>>> good
>>>> use cases for true/false/null tri-state data -- and similar use
>>>> cases
>>>> with most any other data type. How does one get this in JavaFX?
>>
>>>> I can see that maybe one need @Nullable Boolean to tell the JavaFX
>>>> compiler that
>>
>>>> Joshua Marinacci wrote:
>>>>> It's also important to point out that the compiler rejects null
>>>>> for a
>>>>> Boolean because null simply isn't a valid value for a boolean
>>>>> (in the
>>>>> abstract mathematical sense of 'boolean'). Booleans can be true or
>>>>> false. That's it. The compiler rejects anything else. The same for
>>>>> Numbers. The compiler tries to enforce what makes logical sense,
>>>>> since setting a boolean to null is almost always a programmer
>>>>> error.
>>>>> That said, since you *can* drop down to the Java there *are*
>>>>> ways to
>>>>> defeat the javafxc compiler protections if you really want to, but
>>>>> then you are taking your own life into your own hands. :)
>>
>>>>> On Sep 7, 2009, at 7:02 PM, TorNorbye wrote:
>>
>>>>>> I posted a comment on the blog, but I don't see it there so I
>>>>>> may have
>>>>>> done something wrong.
>>
>>>>>> In any case, as far as I understand things (from using the
>>>>>> language -
>>>>>> I'm not working on the compiler team)
>>
>>>>>> 1. The return type of a function, if it isn't specified
>>>>>> explicitly
>>>>>> (either here or in the function it is overriding or by the
>>>>>> parameter
>>>>>> type you are supplying the function to) is inferred from the last
>>>>>> statement of the function. I personally tend to specify it
>>>>>> explicitly in function declarations, especially if it's a public
>>>>>> function. I likewise tend to specify it on variables, if I (a)
>>>>>> want to
>>>>>> use a broad type (e.g. List instead of ArrayList)_, or (b) if I
>>>>>> don't
>>>>>> assign to it right away.
>>
>>>>>> 2. When you see :Boolean (or :Number etc) specified as a type,
>>>>>> that
>>>>>> doesn't mean it's a java.lang.Boolean or java.lang.Number. The
>>>>>> JavaFX
>>>>>> compiler will try to find the most efficient way to represent
>>>>>> it --
>>>>>> which means that it can often use a native int, float or boolean
>>>>>> primitive. (In other cases, where there is a bind involved, it
>>>>>> may be
>>>>>> a BooleanVariable object etc). It's pretty interesting to use
>>>>>> the
>>>>>> javap tool to see how the variables, properties, functions etc.
>>>>>> are
>>>>>> represented as Java classes by the compiler. This would explain
>>>>>> why
>>>>>> you can null a string but not a boolean for example.
>>
>>>>>> Hope that clears things up, if not just ask again.
>>
>>>>>> -- Tor
>>
>>>>>> On Sep 7, 2:20 pm, Rob Wilson <[email protected]> wrote:
>>
>>>>>>> Hi all,
>>
>>>>>>> I posted last week to let you know about my first post in
>>>>>>> JavaFX, I
>>>>>>> now have a new post that's slightly more in-depth covering some
>>>>>>> language oddities from my perspective.
>>
>>>>>>> If you're interested...http://spikyorange.blogspot.com/
>>
>>>>>>> Cheers,
>>>>>>> Rob.
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---