Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^3: undef == 0?

by Fletch (Bishop)
on Oct 24, 2007 at 16:51 UTC ( [id://646943]=note: print w/replies, xml ) Need Help??


in reply to Re^2: undef == 0?
in thread undef == 0?

As everyone else has asked, what number would you propose it be treated as?

Perl doesn't have a single equality operator, it has two which operate on specific types of values:

  • == / != for numeric values
  • eq / ne for string values

A numeric value gets promoted to its string representation when used as a string. A string value gets converted to a numeric value (if possible; 0 if it's not a valid numeric representation) when used as a number.

So when you consider what could be done with the "wrong" kind of value in a given context there's two possibilities:

  • treat it as a domain error (you're not allowed to compare these two types of values; see my Ruby example)
  • convert it to a value in the correct domain (which is what Perl does)

Given that the second choice was made, again what other value would you expect? I might could see an argument being made for NaN, but the choice of 0 makes lots of things "just work" nicely (especially for things like quick 1-liners or 5 minute throw-away scripts where you really aren't that concerned with data validation).

Replies are listed 'Best First'.
Re^4: undef == 0?
by stu42j (Sexton) on Oct 24, 2007 at 17:36 UTC
    I certainly understand operator based context and all that stuff that makes Perl so Special (well, obviously not all of it). I guess I just never really thought about what numerical value undef should have. My understanding of undefined is that it shouldn't have any value at all, by definition. I suppose that something like NaN would be closest to my expectations.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://646943]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-04-26 05:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found