|
|
|
|
Ghandi, Ghandi, Hilfe!
Eine Liste und ein Hash. Ich will die Liste durchlaufen und für jedes Element prüfen ob es im Hash einen Kry gibt der so heißt.
/: Ach, hab schon...
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achse-des-boesen am 23.04.2007 18:58]
|
|
|
|
|
|
Na siehste mal!
Geht auch mal 10Minuten ohne mich wenn ich im Bus sitze
|
Code: |
my $flag;
$flag++ if(!exists $hash{$_}) foreach(@liste);
print "There are $flag elements in \@liste which have no key in \%hash\n";
|
|
|
|
|
|
|
|
|
Und ich hab gerade mal wieder festgestellt, das ich die Perl Syntax wirr finde.
Warum zum Teufel greift man auf ein Array per [] zu und auf einen Hash per {}? Sicher gibts dafür wieder irgend einen tollen Perligen Grund der mir nicht einleuchten wird.
|
|
|
|
|
|
|
Naja, die Sache ist die, weil das Sigil (Vorzeichen) beim Zugriff auf ein einzelnes Element immer einen Skalar referenziert, geht die Unterscheidungsmöglichkeit zwischen Array und Hash verloren.
|
Code: |
my $blubb = $blah[1]; # Array da []
my $blobb = $bluh{1}; # Hash da {}
# Besonders Hilfreich wird das ganze bei referenzen
my $return = $ref1->{hashkey}->[1];
|
|
Daher macht die Unterscheidung schon sinn. Erhoht sogar die Lesbarkeit. Aber eben nur wenn man um die Regeln bescheid weis. Leider glauben die meisten, die vielen verschiedenen kryptischen Zeichen würden die Lesbarkeit verringern
In Perl 6 wird es dahingehend Veränderungen geben, das zumindest das Sigil immer gleich bleibt. Also Egal ob ich auf einen Key oder einen Slice von Keys eines Hash zugreife, es ist immer ein "%" davor
|
Code: |
#Perl6
print %hash;
print %hash{oneKey};
print %hash{thiskey,andthatkey,andthiskey};
|
|
Allerdings bleibt soweit ich weis die Unterscheidung zwischen [] und {} trotzdem bestehen, da ja sonst wieder die Assoziation bei Referenzen verloren ginge.
Vermutung bestätigt (oben rechts) vgl. Perl5 Cheatsheet
// Oh, und natürlich durch den Umstand das mal [] und mal {} verwendet wird, ist es überhaupt erst möglich, sowas zu machen:
|
Code: |
my %var = (0 => "wert aus hash");
my @var = ("wert aus array");
my $var = "wert aus skalar";
print join "\n", $var,$var{0}, $var[0],"\n";
|
|
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von GH@NDI am 23.04.2007 19:27]
|
|
|
|
|
|
Nun, wenn ich Integer als Index verwende, dann kann ich die ja auch entweder in einen String verpacken (keine verschiedenen Datentypen Key in einem Hash) oder ich verwende gleich ein Array. Und wenn per String referenziert wird ist's ja klar das es ein Hash ist.
Lesbarer ist ja wohl das:
|
Code: |
array = [ "ich", "bin", "ein", "array" ]
hash = { "ich" => "bin", "ein" => "hash" }
hash2 = { :und => "ich", :bin => "ein", :noch => "tollerer", :hash => "mit", :symbolen => "punkt" }
puts array[0], hash["ich"], hash2[:bin] |
|
|
|
|
|
|
|
|
Das funktioniert solange gut, wie du eben wirklich händisch auf deine Element zugreifst.
Sobal du aber dynamisch eine Liste durchgehst und jetzt wie bei Achse-des-bösen schauen willst ob das Element als key existiert, müsstet du jetzt jeden Wert vorsichtshalber auf String casten.
Zudem empfinde ich das umgeben von Strings mit Anführungszeichen als Mühsam und bin froh, das mir Perl erlaubt diese an so vielen Stellen wegzulassen
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von GH@NDI am 23.04.2007 19:32]
|
|
|
|
|
|
Warr...endlich diesen blöden Bug gefunden. Offenbar meinte sich svn bei der installation in eine Datei von awstats einpatchen zu müssen, hat es aber dummerweise an anderer Stelle vergessen.
*wargh*
|
|
|
|
|
|
|
Naja, im normalfall müssen Indices aus fremden Quellen eh geprüft werden und wenn ich selbst weiß was ich verwendet hab muss ich nichts casten. Übrigens kann man zwecks vollständiger Objektorientierung jeden Datentyp als Key verwenden, nur geht dann wirklich die offensichtliche auf-den-ersten-Blick-Unterscheidbarkeit flöten. Das ist aber im Normalfall kein Problem und Zwecks der Verwendbarkeit jedes Objekts als Key ja auch gar nicht möglich.
Naja, das eine ist halt der Perl-Way und das andere der Ruby-Way, ich sehs ja ein und lass euch ja euer Spielzeug.
/e: Einen deutlichen Vorteil hat die Zeichenschubserei in Perl, fast sämtliches Alltags-Typecasting kann implizit erledigt werden. In Ruby schreibt man doch häufiger to_s oder to_sym, bzw. was man halt gerade braucht.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von SirSiggi am 23.04.2007 19:43]
|
|
|
|
|
|
Ich hab das übrigens gelöst indem ich das ellenlange Array von Perl einfach in Python kopiert habe und da mit dem netten schlüsselwort "if item in " gearbeitet habe
|
|
|
|
|
|
|
| Zitat von Achse-des-boesen
Ich hab das übrigens gelöst indem ich das ellenlange Array von Perl einfach in Python kopiert habe und da mit dem netten schlüsselwort "if item in " gearbeitet habe
| |
|
Code: |
for my $k (@liste) {
print "$k ist enthalten\n" if grep $k, keys %hash;
}
|
|
So gehts natürlich auch
|
|
|
|
|
|
|
|
Code: |
for item in one:
if not item in two:
print item |
|
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achse-des-boesen am 23.04.2007 19:57]
|
|
|
|
|
|
Bäh, zurück nach 13 Stunden Uni. Da bekommt "Gehirnsalat" eine ganz neue Bedeutung
|
|
|
|
|
|
|
Eigenvektoren, -werte, Endomorphismen: buuuuh!
|
|
|
|
|
|
|
Ich fühl mich so langweilig.
die anderen sind saufen und ich sitze hier und versuch mathe zu lösen :/
außerdem macht das saufen doch auch garkeinen spass, wenn man weiß, dass es am nächsten tag um 7 wieder losgeht...
|
|
|
|
|
|
|
Stelle gerade (schon wieder) fest, dass die jungs vom Graffit Research Lab so verdammt kreativ sind, dass es fast unheimlich ist.
|
|
|
|
|
|
|
| Zitat von Achse-des-boesen
Stelle gerade (schon wieder) fest, dass die jungs vom Graffit Research Lab so verdammt kreativ sind, dass es fast unheimlich ist.
| | Auf jeden Fall!
|
|
|
|
|
|
|
Bin ich doof, wenn ich es nicht so beeindruckend finde, wenn sie ihren Projekter auf Fahrrädern rumkutschieren?
|
|
|
|
|
|
|
nein. aber die seite bietet mehr.
|
|
|
|
|
|
|
| Zitat von GH@NDI
Bin ich doof, wenn ich es nicht so beeindruckend finde, wenn sie ihren Projekter auf Fahrrädern rumkutschieren?
| | Du bist ja auch nur ein uneinsichtiger Perlcoder, dir sei verziehen.
|
|
|
|
|
|
|
So, gerade alle Komponenten für nen neuen PC gekauft, nächste Woche wird gebastelt!
|
|
|
|
|
|
|
Sowas hab ich schon Jahre nicht mehr gemacht.
Hardwaretechnisch häng ich minimum 3 Jahre hinterher...aber ich brauch garnicht mehr
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Achse-des-boesen
Sowas hab ich schon Jahre nicht mehr gemacht.
Hardwaretechnisch häng ich minimum 3 Jahre hinterher...aber ich brauch garnicht mehr
| |
Ich sekundiere diesen Post.
Achja, moin
|
|
|
|
|
|
|
Morgen Freunde!
Ich hab mir zuletzt im November 2005 neue Hardware gekauft. Und bin damit bis heute recht glücklich. Aber bin ja auch kein großer Games. Und Perl läuft ja auch auf nem 486er
|
|
|
|
|
|
|
Mein letzter Rechner ist aus 2004, mein Notebook.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SirSiggi am 24.04.2007 8:27]
|
|
|
|
|
|
- 2003 - So ein AMD-Notebook
- 2004 - ^ verkauft und dafür ein zeitgemäßer Desktoprechner
- 2006 - Vor der Mehrwertsteuererhöhung mein aktuelles Notebook
|
|
|
|
|
|
|
Die Gegenüberliegende Müllverwertungsanlage brannte heute
Scheinbar tut sie das öfter.
Ich bin gespannt!
|
|
|
|
|
|
|
Der Himmel ist trüb und mir platzt der Schädel. Und wie siehts in Neuseeland aus?
Scheinbar ist der Himmel dort öfters trüb.
Ich bin gespannt!
|
|
|
|
|
|
|
Hier ist es seit Ostern das erste mal bewölkt
Total ungewohnt. Hat was von Welteruntergang
|
|
|
|
|
|
|
dichte wolkenschicht am himmel.
mift, ich brauch nen aktuellen zweitrechner, oder worauf soll ich sonst das solaris ausprobieren? hmmmm.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |