Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Converting Hashes to Objects

by haukex (Bishop)
on May 18, 2020 at 12:50 UTC ( #11116901=note: print w/replies, xml ) Need Help??


in reply to Re: Converting Hashes to Objects
in thread Converting Hashes to Objects

Thanks :-)

I often miss Java's standard object methods toString, equals, compareTo, perhaps serialise.

The first three would usually be done with overloading, I guess, and serialization depends on the format (like Storable or one of the many text-based formats). I wrote a bit about the complexity of equals and hashCode in this node.

Another thought is to provide a *safe and proper* way to convert from a string representation of a perl data structure(pds) to pds

I tried to do something like that with Config::Perl (see Undumping Perl).

Replies are listed 'Best First'.
Re^3: Converting Hashes to Objects
by bliako (Prior) on May 20, 2020 at 10:04 UTC

    I was thinking that perhaps it would be easier to auto-implement these methods if you have the object as a hash, which is your input in this case.

    My point was that it is an advantageous start you have there when you are given the object as a hash. So, some things, otherwise tedious, could be auto-implemented. For example, equals() a hash or equals() an object are equivalent but the hash can be cleaner and simpler. Sure objects are hashes eventually but you never know what trickery you will find in there. Same with dumping an object versus dumping a hash.

      So, some things, otherwise tedious, could be auto-implemented. For example, equals() a hash or equals() an object are equivalent but the hash can be cleaner and simpler.

      Ah, I see what you mean. Well, I do think that some of the classic issues of comparing data structures still come up. For example, are these two hashes the same?

      my $x = { foo => { bar => "quz" } }; my $y = { foo => { bar => "quz" } };

      The answer might appear obvious, but note that $x->{foo} ne $y->{foo}! So I think it's still up to the implementor to decide how to determine whether their objects are the same. For simple recursive data structure comparisons, there's e.g. Data::Compare.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2020-09-25 07:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I donít succeed, I Ö










    Results (136 votes). Check out past polls.

    Notices?