Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Action at a distance

by haj (Priest)
on Nov 03, 2022 at 15:50 UTC ( #11147951=note: print w/replies, xml ) Need Help??

in reply to Action at a distance

Whatever it is, it certainly doesn't DWIM.

Yeah, it is a pitfall... which is common to all objects which try to behave like they are primitive data types. These are like photons, which behave either as waves or as particles, depending on how you look at them. No wonder that they show quantum effects.

My favourite workaround for this is to write $x = $bi * 1;. This is like $x = $b1->copy but also works if $b1 is just a plain integer or a Math::Complex object (these does not offer a copy method) or even a Math::Matrix or Math::Quaternion object.

Replies are listed 'Best First'.
Re^2: Action at a distance
by syphilis (Archbishop) on Nov 04, 2022 at 12:52 UTC
    My favourite workaround for this is to write $x = $bi * 1;

    Yes, that works fine ... for those who:
    1) are aware that it's needed;
    2) remember to do it.
    I'd like a better solution, but I don't yet see that one exists.

    You can also work around the problem by doing $x = Math::BigInt->new($bi), but the brevity of doing $x = $bi is a very attractive alternative ... or, at least, would be if it DWIMmed.
    Doing $x = $bi will not call the sub that overloads '=' until an attempted modification of the value of $x has been detected and, while doing $x++ triggers that detection, doing $x->binc() apparently does not.

    Thanks for the thoughts so far.
    Is there something already posted in this thread to which I should pay more attention ?


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (5)
As of 2023-03-28 05:25 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (66 votes). Check out past polls.