Kai: Verständnisfrage zu "return"

Hallo!
Ich habe eine Verständnisfrage zur return-Anweisung. Wofür braucht man das? Habt ihr ein einfaches JavaScriptbeispiel, oder so?
Es ist vielleicht eine blöde Frage, aber mir ist es bis jetzt noch nicht untergekommen, dass ich das brauchte.
Danke! Kai

  1. Hallo Kai,

    [return] Wofür braucht man das?

    ähm, die Frage sagt mir, dass du die urtümlichsten Grundlagen der Datenverarbeitung bzw. Programmierung noch nicht erfasst hast.

    Eine Funktion ist (idealisiert) ein eigenständiger Programmzweig, der ein oder mehrere Eingabewerte (aka "Parameter" oder "Argumente") bekommt und daraus ein Ergebnis ermittelt und dieses an das aufrufende Programm zurückliefert.
    Genau dafür ist die return-Anweisung da. Sie gibt erstens an, "beende die Funktion hier", und sie gibt zweitens an, *welcher* Wert als Ergebnis zurückgegeben wird.

    Habt ihr ein einfaches JavaScriptbeispiel, oder so?

    Ja, ein ganz triviales:

    function Maximum(a,b)
      { if (a>b)
           return (a);
        else
           return (b);
      }

    Es ist vielleicht eine blöde Frage, aber mir ist es bis jetzt noch nicht untergekommen, dass ich das brauchte.

    Das schockiert mich allerdings schon ...

    So long,
     Martin

    --
    Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
    1. echo $begrüßung;

      return (a);

      Möchtest du nicht eigentlich nur a zurückgeben oder muss es unbedingt ein Ausdruck sein, der doch nur a enthält?

      echo "$verabschiedung $name";

      1. Hallo,

        return (a);
        Möchtest du nicht eigentlich nur a zurückgeben oder muss es unbedingt ein Ausdruck sein, der doch nur a enthält?

        das ist eine uralte Überzeugung von mir: Das Argument der return-Anweisung "gehört" für meine Begriffe geklammert. Genauso wie beim while- oder if-Statement - bin ich von C so gewöhnt. Und solange ich weiß, dass das Ergebnis dasselbe ist, dann gehören Klammern einfach drum. Sieht einfach anständiger aus. ;-)

        So long,
         Martin

        --
        Ein guter Lehrer muss seinen Schülern beibringen können,
        eine Frage so zu stellen, dass auch der Lehrer lernen muss,
        um die Frage beantworten zu können.
          (Hesiod, griech. Philosoph, um 700 v.Chr.)
        1. echo $begrüßung;

          Das Argument der return-Anweisung "gehört" für meine Begriffe geklammert. [...] Sieht einfach anständiger aus. ;-)

          Ach was ... das sieht genauso (un)anständig aus wie unter PHP Gänsefüßchen um einfache Variablen

          $bar = foo("$variable");

          Genauso wie beim while- oder if-Statement - bin ich von C so gewöhnt.

          Da gehören die Klammern direkt zur Syntax dieser Elemente (in Pascal zum Beispiel sind sie kein Pflichtbestandteil), was bei return nicht der Fall ist.

          echo "$verabschiedung $name";

          1. Hi,

            [...] Sieht einfach anständiger aus. ;-)
            Ach was ... das sieht genauso (un)anständig aus wie unter PHP Gänsefüßchen um einfache Variablen
              $bar = foo("$variable");

            das ist 'ne Frage der Interpretation von Datentypen und impliziten Typecasts. Wenn ich erzwingen will, dass das Endergebnis vom Typ String ist, setze ich eine numerische Variable auch mal in Anführungszeichen. Das ist aber selten nötig.

            Genauso wie beim while- oder if-Statement - bin ich von C so gewöhnt.
            Da gehören die Klammern direkt zur Syntax dieser Elemente (in Pascal zum Beispiel sind sie kein Pflichtbestandteil), was bei return nicht der Fall ist.

            Ich weiß. In Pascal bin ich zwar etwas aus der Übung, aber ich kann es prinzipiell noch. Und auch in C sind die Klammern beim return optional - und genau das erscheint mir unordentlich und inkonsequent. Denn bei allen anderen Sprachkonstrukten/Keywords gehört der Ausdruck geklammert (bei C++ nicht mehr so konsequent, C++ erzieht zur Schlamperei), also mach' ich das schon aus ästhetischen Gründen auch beim return, damit das nicht aus der Reihe tanzt.

            So long,
             Martin

            --
            Computer funktionieren grundsätzlich nicht richtig.
            Wenn doch, hast du etwas falsch gemacht.
        2. hi,

          das ist eine uralte Überzeugung von mir: Das Argument der return-Anweisung "gehört" für meine Begriffe geklammert.

          Return ist keine Funktion, eher ein "Sprachkonstrukt".

          Genauso wie beim while- oder if-Statement - bin ich von C so gewöhnt.

          Und in PHP beispielsweise auch beim echo, beim include/require, ...?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hi wahsaga,

            das ist eine uralte Überzeugung von mir: Das Argument der return-Anweisung "gehört" für meine Begriffe geklammert.
            Return ist keine Funktion, eher ein "Sprachkonstrukt".

            ich habe nie was anderes behauptet. Die while- oder if- oder switch-Anweisungen sind auch keine Funktionen, sondern "Sprachkonstrukte", und trotzdem *müssen* deren Argumente geklammert werden.

            Und in PHP beispielsweise auch beim echo, beim include/require, ...?

            Da setze ich auch Klammern, ja. Denn diese Anweisungen haben zumindest den Charakter einer void-Funktion: Sie sind keine Kontrollstrukturen, sondern führen direkt etwas aus. Aber sie geben kein Ergebnis zurück.
            Okay, beim echo lasse ich die Klammern manchmal, wenn ich nur mal eben auf die Schnelle was ausprobieren will, schon mal weg. Aber selten.

            Ciao,
             Martin

            --
            Der Mensch denkt, Gott lenkt.
            Der Mensch dachte, Gott lachte.
            1. n'abend,

              Denn diese Anweisungen haben zumindest den Charakter einer void-Funktion: Sie sind keine Kontrollstrukturen, sondern führen direkt etwas aus. Aber sie geben kein Ergebnis zurück.

              das würde ich so nicht sagen. Include ist keine void()-Funktion / Kontrollkonstrukt ;)

              weiterhin schönen abend...

              --
              Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
              sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
        3. n'abend,

          Und solange ich weiß, dass das Ergebnis dasselbe ist, dann gehören Klammern einfach drum. Sieht einfach anständiger aus. ;-)

          erzähl das mal einer (PHP-)Funktion, die ihren Returnwert per Referenz zurückgibt. Das wird dir erstmal ziemliche Kopfschmerzen bereiten ;)

          weiterhin schönen abend...

          --
          Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
          sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
          1. echo $begrüßung;

            Und solange ich weiß, dass das Ergebnis dasselbe ist, dann gehören Klammern einfach drum. Sieht einfach anständiger aus. ;-)

            erzähl das mal einer (PHP-)Funktion, die ihren Returnwert per Referenz zurückgibt. Das wird dir erstmal ziemliche Kopfschmerzen bereiten ;)

            Naja, wenn man eine aktuelle PHP-Version benutzt (4.4.x oder 5.weißnichtgenau), dann ist PHP wenigstens so freundlich, darauf mit einer Meldung hinzuweisen.

            echo "$verabschiedung $name";

            1. n'abend,

              Naja, wenn man eine aktuelle PHP-Version benutzt (4.4.x oder 5.weißnichtgenau), dann ist PHP wenigstens so freundlich, darauf mit einer Meldung hinzuweisen.

              das will ich doch auch schwerst hoffen. Bringt den Otto-Normal-Notices-And-Warnings-Ignorierer aber auch nicht weiter....

              weiterhin schönen abend...

              --
              Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
              sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
          2. Hi,

            Und solange ich weiß, dass das Ergebnis dasselbe ist, dann gehören Klammern einfach drum. Sieht einfach anständiger aus. ;-)

            erzähl das mal einer (PHP-)Funktion, die ihren Returnwert per Referenz zurückgibt.

            als alter Hase in C bin ich gewöhnt, dass ich den Rückgabewert mit dem Adressoperator & ausstatte, wenn ich eine Referenz (zu Deutsch: einen Zeiger) auf das Ergebnis zurückgeben will. Und gerade das Beispiel, das du verlinkt hast (besser gesagt, die drei Beispiele), zeigt mir, dass ich in PHP ganz ähnlich verfahren kann. Das erste der drei Beispiele zeigt für meine Begriffe den einzigen sinnvollen Anwendungsfall, und da ist es syntaktisch eindeutig, selbst _wenn_ ich Klammern um den return-Wert setze.

            Das wird dir erstmal ziemliche Kopfschmerzen bereiten ;)

            Nö, ich glaube nicht. :)

            Ciao,
             Martin

            --
            Niemand lebt allein von seinen Träumen.
            Aber wer träumt, lebt noch.
  2. n'abend,

    Ich habe eine Verständnisfrage zur return-Anweisung. Wofür braucht man das? Habt ihr ein einfaches JavaScriptbeispiel, oder so?
    Es ist vielleicht eine blöde Frage, aber mir ist es bis jetzt noch nicht untergekommen, dass ich das brauchte.

    return spielt im Umgang mit Funktionen eine recht wesentliche Rolle. Mit return kannst du eine Funktion vorzeitig abbrechen (bzw. verlassen), oder einen Wert zurückgeben lassen.

    Man schaue sich den Bereich Javascript Sprachelemente an, für konkretes Problem auch Javascript / Sprachelemente / Funktionen.
    In Zukunft solltest du zuerst in der Referenz nachschauen ;)

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|