Schrift
[thread]12838[/thread]

Verständnisfrage Datentypen (Array/Hash/literale "Listen") (Seite 2)

Leser: 5


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
betterworld
 2008-11-29 18:47
#116716 #116716
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Hmm, mir fällt gerade auf, meine Beispiel mit der Subroutine ist auch nicht ganz korrekt. Eigentlich steht die Subroutine im skalaren Kontext, daher erzeugt auch das "return" einen skalaren Kontext, d.h. der ","-Operator ergibt einfach das letzte Argument. Läuft auf's gleiche hinaus... das ist schon manchmal alles etwas verworren.
lichtkind
 2008-11-29 18:51
#116717 #116717
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja betterworld ich sprach nur von syntaktischen ebene, das hash letztlich anders abgespeichert
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
tschloss
 2008-11-29 21:50
#116719 #116719
User since
2008-04-21
30 Artikel
BenutzerIn
[default_avatar]
...dass Liste kein Datentyp ist, war auch mir klar. Deswegen sprach ich zumindest im Eingangspost uach von einer literalen Liste und meinte damit banal gesagt eine Aufzählung, meist rechts zum Zuweisungsoperator. Dort spricht man vielleicht nicht von einem Array, v.a. dann nicht, wenn links eine Hashvariable steht.

Aber ich denke, alle sind hier auf der selben Linie....

Danke nochmals
Thomas
LanX-
 2008-11-30 03:35
#116733 #116733
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
tschloss+2008-11-29 20:50:55--
...dass Liste kein Datentyp ist, war auch mir klar. Deswegen sprach ich zumindest im Eingangspost uach von einer literalen Liste und meinte damit banal gesagt eine Aufzählung, meist rechts zum Zuweisungsoperator. ...


Du, literal trifft aber IMHO die Sache eben nicht ganz, weil auch Konvertierungen von und zu Listen stattfinden.
Code (perl): (dl )
($key,$value,%hash)=%hash;


Verwirrungen diesbzgl. sind auch nicht verwunderlich, weil angeblich auch in manchen perldocs die Begriffe Arrays und Listen durcheinandergewürfelt werden!

Deswegen wäre es mal wichtig die Sache mit Beispielen auszudiskutieren bis eine belastbare Definition dasteht, statt es alle naslang halbherzig zu umschreiben.
betterworld
 2008-11-30 04:44
#116734 #116734
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
LanX-+2008-11-30 02:35:11--
Verwirrungen diesbzgl. sind auch nicht verwunderlich, weil angeblich auch in manchen perldocs die Begriffe Arrays und Listen durcheinandergewürfelt werden!

Und nicht nur da... Wenn man aus C heraus eine Perl-Subroutine im Listenkontext aufrufen will, macht man das mit dem Flag G_ARRAY.

Aber ich wage mal zu behaupten, dass manchmal der Unterschied zwischen Array und Liste auch sehr fließend ist.
LanX-
 2008-11-30 12:34
#116736 #116736
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
betterworld+2008-11-30 03:44:03--
Aber ich wage mal zu behaupten, dass manchmal der Unterschied zwischen Array und Liste auch sehr fließend ist.


mag in einigen Perl-Entwicklerköpfen so sein, aber man braucht irgendwo ein Modell um sich das Verhalten von Perl zu erklären...

THEORETISCH erkennt man eine Liste nämlich am Komma (die Klammern sollen nur Klammern), AUSSER in einigen Fällen wo es ein oder null Elemente gibt.
Dann spart man aus DWIM die Kommas ein und lässt dann die Klammer sprechen:

Code (perl): (dl )
1
2
($a) x 5 ; # 5 elementige Liste aus $a Elementen
()           ; # leere Liste


Dafür gibts dann Stellen wo Kommas Befehle trennen und Klammern die Ausführungsreihenfolge bestimmen

Das ist dann ein bisschen wie das Pokerspiel "Fizzbin" bei Startrek "... Herz ist Trumpf, außer bei Vollmond dann Kreuz, es sei denn es ist Mittwoch ..."
renee
 2008-11-30 13:00
#116737 #116737
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
LanX-+2008-11-30 02:35:11--
Verwirrungen diesbzgl. sind auch nicht verwunderlich, weil angeblich auch in manchen perldocs die Begriffe Arrays und Listen durcheinandergewürfelt werden!


Und nicht zu vergessen wantarray, was wahr ist, wenn eine Sub im Listenkontext aufgerufen wird...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
LanX-
 2008-12-01 15:48
#116770 #116770
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
NACHTRAG: mal hier ein Beispiel wie eine scheinbar "literale Liste" auf der linken Seite einer Zuweisung zu einem temporären Array mutiert.

siehe Diskussion ob ($a) eine ein-elementige Liste beschreibt!
betterworld
 2008-12-01 20:18
#116772 #116772
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
LanX-+2008-11-30 11:34:18--
betterworld+2008-11-30 03:44:03--
Aber ich wage mal zu behaupten, dass manchmal der Unterschied zwischen Array und Liste auch sehr fließend ist.


mag in einigen Perl-Entwicklerköpfen so sein, aber man braucht irgendwo ein Modell um sich das Verhalten von Perl zu erklären...


Ist bestimmt ein schlechtes Beispiel, aber betrachten wir mal dies:

Code: (dl )
1
2
3
@a = (1, 2);
(@a) = (1, 2);
($a, @a) = (1, 2);


Das ist sicherlich alles "list assignment"... aber wann ist das auf der linken Seite nun ein Array, und wann ist es eine Liste? Naja, jedenfalls in meinem "Entwicklerkopf" würde ich meinen, dass da ein fließender Übergang ist.
Deine Diskussion mit ikegami hab ich auch gelesen.
LanX-
 2008-12-01 21:10
#116773 #116773
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Ich kanns dir ehrlich nicht 100%ig sagen, weil nur unterscheidbar ist was messbar ist. Du siehst, ich gehe mittlerweile an Perl ran, wie an ein quanten-physikalisches Phänomen.

Ich finde an der Diskussion bei perlmonks abstrus, dass mit "das ist so weil die opcodes oder der c-code so und so aussehen" argumentiert wird und dabei sowas wie der versuch einer Abstraktionsebene oder Spezifikation ganz aufgegeben wird.

Demnächst erleutere ich MS-Word auch anhand des Assemblercodes ...

Sofern mein qualmender Schädel dir was sagen kann, ist es, dass die linke Seite einer Zuweisung nie eine Liste sein sollte, weil Listen unveränderbar sind.

Zudem heißt der opcode für "=" hier jedesmal aassign und nicht "list assign".

Außerdem wird scalar() zwar als unäre Function dokumentiert, ist aber keine Funktion, die Klammerungsregeln folgt. Ich habe kein perldoc gefunden in der "context" richtig erklärt wurde.

Ich versuche mich weiter streitend einem funktionierendem (Atom-)Model für Perl zu nähern...

PS: Mit Entwicklerköpfen meinte ich perldoc-Autoren...

NACHTRAG: "List" Is a Four-Letter Word
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2008-11-29 13:20.