Wie erstelle ich ein Objekt, das verschiedene Werte in verschiedenen Skalarkontext zurückgibt?

StackOverflow https://stackoverflow.com/questions/800436

  •  03-07-2019
  •  | 
  •  

Frage

Ich möchte einen anderen Wert in String-Kontext und numerischen Kontext zurückzukehren wie $! der Fall ist. Ich weiß, ich kann herausfinden, ob ich in der Liste oder Skalarkontext mit wantarray, aber ist es eine Möglichkeit, in reinem Perl zu bestimmen, welche Skalarkontext ich bin in? Ich nehme an, es ist eine Antwort in XS, wie gut und ich bin bereit, diese Antwort zu nehmen, wenn es keine Möglichkeit, es in reiner Perl zu tun ist.

War es hilfreich?

Lösung

Überprüfen Sie die Scalar::Util Modul aus, insbesondere die dualvar() Funktion:

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 ist Teil der Core-Distribution und sollte überall Sie haben Perl avaliable sein.

Andere Tipps

Während ich Fälle schlagen kann, wenn dies sinnvoll sei (vielleicht römische Ziffern), würden Sie besser dran, ein Objekt mit einer ganzen Zahl zu schaffen und einem String-Attribute. Verwenden Sie das entsprechende Attribut im entsprechenden Kontext.

Das gibt Ihnen die zusätzliche Flexibilität der Lage zu sein, Operationen mit ‚Verwendung Überlastung‘ zu überlasten. In einem Beispiel römischen Ziffern, dualvar arbeiten, bis Sie zusammen 2 römischen Ziffern hinzugefügt werden soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top