LanX!: wantarray

Beitrag lesen

Perl ist IMHO die einige Sprache mit solchen contexts.

Du kannst etwas "ähnliches" mit stringification und nummification eines Objektes in JS haben, die entsprechenden Operatoren erzwingen eine implizite Wertumwandlung.

Dafür müsstest du aber die entsprechenden Methoden im Prototyp deines "Hash"-Objectes überschreiben. Sodass du an den Stellen wo du den einzelnen Skalar haben möchtest syntaktisch ein String erzwungen wird.

z.B. mit

skalar=""+object  
list=0+object  
hash=object  

(letzteres klont dann die werte in ein neues Array objekt)

Das ist aber alles nicht sonderlich sinnig in JS, ein skalar könnte ja auch eine Zahl sein und dann .. ärgh...

Die deutlich bessere Variante deinem Object eine Methode set() hinzuzufügen die die Zielvariable als Parameter erhält.

Ist diese vom typ string wird nur ein Wert gesetzt, ansonsten ein array.

  
obj.set(skalar)  
obj.set(array)  

Das ist dann auch auf beliebige Zielobjekte erweiterbar.

Könnte man in JS die Zuweisung überladen wie in Perl (geht nicht) wärs vielleicht sogar möglich contexts zu emulieren.

Vergiss aber nicht dass du in JS Arrays und andere Objecte als solche initialisieren musst damit die Erkennung klappt, weil es ja keine Sigils gibt.

Also

a=[]  
a= new Array()  
obj.set(a)  

Ob dass nun alles so funktioniert wie du's gern hättest musst du selbst rausfinden...

Was du also bei der Zuweisung einsparst, erzeugt neuen overhead, deswegen eröffnen sich in JS dadurch keine neuen Horizonte.

Üblicherweise würde man viel eher sowas schreiben:

skalar=obj.clone(name);  
list=obj.clone(vname);  
skalar=obj.name;  
list=obj.vname;  

Grüße
  Rolf