[Roma.pm] - perfunc
Emanuele Zeppieri
ema_zep at libero.it
Wed Feb 6 11:41:32 PST 2008
Daniele Ludovici wrote:
> Ormai ci siamo, emazep mi hai stuzzicato troppo e io ora stuzzico te con
> una domanda forse stupida ma che (conoscendoti un po') generera' un
> commento interessante. Scrivilo se e solo quando ne avrai voglia:
>
> bigint o Math::BigInt, come, dove e in base a cosa scegliere?
Allora, non c'è grande differenza, perché bignum è semplicemente un
frontend per Math::BigInt che, sfruttando l'overloading delle costanti
(su cui c'è un bell'articolo su perl.it ;-) trasforma ogni valore
letterale (numificabile) incontrato nel codice in un oggetto Math::BigInt.
Quindi bigint può tornare comodo se devi lavorare su valori letterali (o
comunque se parti da quelli, perché le altre variabili coinvolte nelle
espressioni vengono comunque contaminate e diventano oggetti
Math::BigInt anch'esse - grazie all'overloading degli operatori).
Insomma bigint rende le cose più trasparenti.
La differenza è sostanzialmente scrivere questo:
use Math::BigInt;
my $str = <numero, anche grandissimo>;
my $x = Math::BigInt->new($str); # $x è ora un oggetto Math::BigInt;
oppure questo:
use bigint;
my $x = <numero, anche grandissimo>; # $x è ora lo stesso un oggetto
# Math::BigInt;
Ecco, nel caso sollevato da Aldo (valori noti solo a runtime) se usi
direttamente Math::BigInt non sei costretto a ricorrere al trucco di
sommargli zero, che obiettivamente non è il massimo dell'eleganza.
Ciao,
Emanuele.
More information about the Roma
mailing list