Re: XML
Sven Lauer <[email protected]>
| Newsgroups | gmane.comp.lang.ruby.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo, "Tobias Huesgen" <[email protected]> wrote: > Hallo! > > >> In PHP könnte man sowas machen: > >> $var1 = "variable"; > >> $$var1 = "Eine Variable"; > >> echo $variable; //Output = "Eine Variable"; > > > > ist das ein typo? muesste es nicht heissen: > > > > echo $var1; //Output = "Eine Variable"; > > Nein, eben nicht. Das ist ja der "Witz" daran. :) > Bei $$var1 = "Eine Variable"; wird einer Variablen, dessen Name der Inhalt > von $var1 ist, ein Wert zugewiesen. Was - in Ruby übertragen - aber missverstaendlich ist. In PHP ist die Interpretation straight forward, weil eben alle Variablen mit $ beginnen. In Ruby nicht, deshalb kann das so auch nicht funktionieren: Da in PHP der Begin eines Variablennamens mit einem $ angezeigt wird, hat $$var eine ganz klare Semantik: [Variable mit dem Namen: [Variable mit dem Namen: var]]. Kraft authoritärer Willkür wird dann festgelegt, dass das bedeutet, dass wir den Variable ansprechen, deren Name sich ergibt, wenn wir den Wert von $var an den Variablenanzeiger $ hängen. Da nun in Ruby unterschiedliche Variablenanzeiger (bzw. keine) gebraucht werden, ist ein solches Konstrukt nicht wirklich intuitiv zu realisieren. Zudem ist es IMHO nur begrenzt sinnvoll, aber das gilt auch fuer die PHP-Variante ;-) ciao, Sven P. S. Natürlich könnte man sich etwas wie $#{$var} vorstellen, bzw. dann auch für lokale Variablen #{var} . Letzteres wuerde dann bedeuten "die (lokale) Variable, die den Namen trägt, der als String value in der lokalen Variablen var abgelegt ist." Sieht aber haesslich aus, ist kaum lesbar und unklar (was passiert, wenn der Inhalt von "var" "$var2" ist - wird dann eine globale Variable angesprochen? Ist das wirklich sinnvoll?). Das ganz davon abgesehen, dass PHP per-value zuweist (PHP3 ausschließlich, PHP4 per default), was die "variable Variablen"-Syntax begünstigt, während Ruby per-reference zuweist. Die Überlegungen sind natürlich nur von theoretischer Bedeutung, irb zeigt, dass es nicht funktioniert, die Überlegungen zeigen höchstens, warum es das nicht tut, bzw. nicht tun sollte.