Come faccio a creare un oggetto che restituisce valori diversi in contesti scalari diversi?
Domanda
Voglio restituire un valore diverso nel contesto stringa e nel contesto numerico come
Soluzione
Guarda il modulo Scalar :: Util
, in particolare la funzione dualvar ()
:
use Scalar::Util qw(dualvar);
my $scalar = dualvar 10, "Hello";
my $twelve = $scalar + 2; # $twelve = 12
my $greeting = $scalar . " world"; # $greeting = "Hello world"
Scalar :: Util
fa parte della distribuzione principale e dovrebbe essere disponibile ovunque tu abbia Perl.
Altri suggerimenti
Mentre posso proporre casi in cui questo sarebbe utile (forse numeri romani), sarebbe meglio creare un oggetto con un numero intero e un attributo stringa. Utilizzare l'attributo appropriato nel contesto appropriato.
Questo ti dà la maggiore flessibilità di poter sovraccaricare le operazioni con 'usa sovraccarico'. In un esempio di numeri romani, dualvar funzionerà fino a quando non si desidera aggiungere 2 numeri romani insieme.