Jacque.
Also true for "-300" But your point is interesting, the cat is content until called upon to act. But, noneTheLess, this: on mouseUp local b answer b + 1 end mouseUp Also works just fine, thank you, and therefore the engine still knows what to do, happily typing on the fly like it always did, correctly, thank goodness, even with numeric calculations dealing with empty. The "0" seems just wrong. If the above handler did not treat empty properly, then I would agree with your cat. Craig -----Original Message----- From: J. Landman Gay <jac...@hyperactivesw.com> To: How to use LiveCode <use-livecode@lists.runrev.com> Sent: Mon, Oct 27, 2014 2:25 pm Subject: Re: Is zero the same as empty? On 10/27/2014, 11:20 AM, Graham Samuel wrote: > I found that if a parameter of a handler or function, or indeed a > local variable, (say t1) has never had a value placed in it, then > > t1 = 0 > > is true. I was surprised by this, since I thought all unassigned > variables were rendered empty by the engine, and that empty and zero > were distinct. > > But in the same script > > t1 = empty > > is also true. Logically then, ‘empty’ is the same as ‘0’. However the > statement > > 0 = empty > > evaluates to false. Furthermore if I make sure t1 is empty by > > put empty into t1 > > then > > 0 = t1 > > yields false. > > Am I going crazy? This issue matters to me as I am comparing numeric > characters with a variable which is sometimes unassigned. I see that > I must always assign a value to the variable, even it that value is > empty! > > Is this any kind of a bug, or is it just slightly strange behaviour > on the part of the engine? Empty is sort of a Schrödinger variable and changes its state depending on how you look at it. If it is used in a numeric calculation it resoves to zero. Otherwise it resolves to empty. You don't need to do anything in particular, the engine handles that. In your tests, neither t1= empty and t1= 0 force an evaluation, so both are true. But zero and empty are not equivalent (one is a numeric value, one has no value at all,) so that evaluation is false. When you specifically put empty into t1, then it no longer equals zero. In a handler that calculates empty variables in a math operation, you will always get the right answer. If you only need to see if the variable has a particular value, something like this always resolves correctly: if t1 < 1 then... -- true for both zero and empty -- Jacqueline Landman Gay | jac...@hyperactivesw.com HyperActive Software | http://www.hyperactivesw.com _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode