Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: goto superclass method

by chromatic (Archbishop)
on Dec 22, 2004 at 19:46 UTC ( #416884=note: print w/replies, xml ) Need Help??


in reply to Re: goto superclass method
in thread goto superclass method

Why go to so much work to try to make polymorphism work only to break it by calling a UNIVERSAL method explicitly?

Replies are listed 'Best First'.
Re^3: goto superclass method
by Ovid (Cardinal) on Dec 22, 2004 at 21:21 UTC

    Well, calling can directly can break if you have something in @ISA that isn't a class (such as a coderef: Class::Dynamic). Out of habit I try to call UNIVERSAL::can unless the $object->can('can');

    Perhaps I'm being overly paranoid.

    Cheers,
    Ovid

    New address of my CGI Course.

      How do you know in general whether the object or class has its own can though? (Easy answer, but not one you'll like.)

      I prefer to use Scalar::Util's blessed to see if I can invoke operations on an object, though wrapping the call in an eval block is safer if you expect class names as well.

        I guess in this case it would be preferable to call call can as a method and let the code die and then worry about what to do if it fails. That's probably better than my silently failing or doing the wrong thing because of an overridden can.

        Cheers,
        Ovid

        New address of my CGI Course.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (14)
As of 2019-03-21 16:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How do you Carpe diem?





    Results (110 votes). Check out past polls.

    Notices?