Re: Anzahl keys in hash? - perl denkt mit ;-) - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 19.September.2001, 16:54.
    Re: Anzahl keys in hash? - perl denkt mit ;-)

      perl versucht immer das sinnvollste (es ist wirklich eine tolle sprache ;-) ) zu machen:

      keys %weeks

      gibt je nachdem was als antwort _erwartet_ wird etwas anderes zurück. schreibt man:

      $anzahl=keys %weeks;
      

      dann kann $anzahl ja nur einen einzigen wert aufnehmen ($anzahl ist ein sog. "skalar", im gegensatz zu "hash" und "array", die mehrere elemente aufnehmen können). da aber ein hash ja (normalerweise) aus vielen elementen mit schlüsseln und werten besteht, welchen davon soll $anzahl da als wert bekommen? so hat sich larry wall ausgedacht, dass es am sinnvollsten ist, hier einfach die anzahl der elemente von %weeks zurückzugeben. schreibt man dagegen

      out keys %weeks;
      

      dann erwartet "out" beliebig viele elemente (ein "array"), also gibt ihm perl alle keys, wie gewünscht. man kann den "skalaren kontext" auch erzwingen, indem man schreibt:

      out scalar(keys %weeks);
      

      "scalar" erwartet einen einzigen wert, also gibt ihm "keys" die anzahl der elemente und der wert wird wiederum an "out" gegeben...

      die frage die sich also jeweils stellt: wieviele werte werden erwartet: einer oder mehrere?

      man kann auch selbst routinen schreiben, die so ein verhalten haben, dazu gibt es den befehl "wantarray", hier ein (sinnloses ;-) ) beispiel:

      $a=&test(2, 10); out "a=$a<br>";
      ($a,$b)=&test(2, 10); out "a=$a - b=$b<br>";
      sub test
      {
        my ($x,$y)=@_;
        return wantarray ? $x+$y/2 : ($x+$y, $x-$y);
      }
      

      die routine "test" gibt den durchschnitt der beiden übergebenen zahlen zurück, wenn ein skalar gewünscht ist, sonst die summe und die subtraktion der beiden zahlen...

      so, ende perl-kurs teil 1 ;-) als hausaufgabe erstellt ihr bitte bis zum nächsten mal eine routine, die in einem "skalaren kontext" den durchschnitt aller übergebenen werte zurückgibt und sonst alle elemente sortiert nach dem grössten wert... ;-))))


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Sander (8133 Beiträge) am Dienstag, 18.September.2001, 23:47.
    Anzahl keys in hash?

      Hallo Claus C, nun bist du mal dran ;-) oder auch Christoph nochmal.

      Ich versuche die Anzahl der keys aus einem hash herauszubekommen. Bis jetzt bin ich bei:
      $anzahl=(keys %weeks);
      
      stimmt das so?

      wenn ich
      out (keys %weeks);
      
      schreibe, werden alle keys ausgegeben.
      Aber danach in
      for (10..$anzahl) funktioniert es wieder.
      

      Also es geht nur darum, ob es richtig ist.

      Danke

      Sander

     Antworten

    Beitrag von Claus Christmeier (598 Beiträge) am Mittwoch, 19.September.2001, 00:16.
    Re: Anzahl keys in hash?

      Hallo Sander,

      es muss "$anzahl = keys(%weeks)" heissen.

      Gruß
      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 19.September.2001, 01:23.
    Re: Anzahl keys in hash?

      vielen Dank, man lernt nie aus.

      Sander

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 19.September.2001, 16:54.
    Re: Anzahl keys in hash? - perl denkt mit ;-)

      perl versucht immer das sinnvollste (es ist wirklich eine tolle sprache ;-) ) zu machen:

      keys %weeks

      gibt je nachdem was als antwort _erwartet_ wird etwas anderes zurück. schreibt man:

      $anzahl=keys %weeks;
      

      dann kann $anzahl ja nur einen einzigen wert aufnehmen ($anzahl ist ein sog. "skalar", im gegensatz zu "hash" und "array", die mehrere elemente aufnehmen können). da aber ein hash ja (normalerweise) aus vielen elementen mit schlüsseln und werten besteht, welchen davon soll $anzahl da als wert bekommen? so hat sich larry wall ausgedacht, dass es am sinnvollsten ist, hier einfach die anzahl der elemente von %weeks zurückzugeben. schreibt man dagegen

      out keys %weeks;
      

      dann erwartet "out" beliebig viele elemente (ein "array"), also gibt ihm perl alle keys, wie gewünscht. man kann den "skalaren kontext" auch erzwingen, indem man schreibt:

      out scalar(keys %weeks);
      

      "scalar" erwartet einen einzigen wert, also gibt ihm "keys" die anzahl der elemente und der wert wird wiederum an "out" gegeben...

      die frage die sich also jeweils stellt: wieviele werte werden erwartet: einer oder mehrere?

      man kann auch selbst routinen schreiben, die so ein verhalten haben, dazu gibt es den befehl "wantarray", hier ein (sinnloses ;-) ) beispiel:

      $a=&test(2, 10); out "a=$a<br>";
      ($a,$b)=&test(2, 10); out "a=$a - b=$b<br>";
      sub test
      {
        my ($x,$y)=@_;
        return wantarray ? $x+$y/2 : ($x+$y, $x-$y);
      }
      

      die routine "test" gibt den durchschnitt der beiden übergebenen zahlen zurück, wenn ein skalar gewünscht ist, sonst die summe und die subtraktion der beiden zahlen...

      so, ende perl-kurs teil 1 ;-) als hausaufgabe erstellt ihr bitte bis zum nächsten mal eine routine, die in einem "skalaren kontext" den durchschnitt aller übergebenen werte zurückgibt und sonst alle elemente sortiert nach dem grössten wert... ;-))))

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 19.September.2001, 18:18.
    Re: Anzahl keys in hash? - perl denkt mit ;-)

      ich glaube, an dieser Stelle kommt man bei selfhtml an die Grenzen. Sowas steht nun wirklich nicht mehr drin.

      Danke für den Exkurs - Ich hab aber eine Hausaufgabenbefreiung ;-)

      Sander

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 20.September.2001, 00:38.
    Re: Anzahl keys in hash? - perl denkt mit ;-)

      So? Davon weiss ich ja garnix! Ist die auch von den Eltern unterschrieben!? ;-)

     Antworten


     
 Liste der Einträge von 56851 bis 57001:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.07s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!