Wann sollte eine Funktion eine explizite return-Anweisung in Julia enthalten?


8

Wann sollte eine Funktion in Julia eine return-Anweisung mit dem Schlüsselwort return haben und wann sollte sie nur mit der Variablen zurückgegeben werden, die ich am Ende der Funktion zurückgeben möchte?

Ich habe die Julia-Dokumente gelesen und es scheint, dass hier ziemlich viel Literatur zu diesem Thema zu finden ist .

Mein Verständnis ist, dass die Konvention immer verwendet werden soll, returnwenn Sie versuchen, aus der Funktion auszubrechen und ansonsten nur die Variable zu haben, die Sie am Ende der Funktion zurückgeben möchten.

Ist mein Verständnis richtig oder fehlt mir hier etwas?

Antworten:



4

Technisch gesehen, haben Sie haben sich auf die Verwendung returnSchlüsselwort ein, wenn die Rückkehr CodeInfoaus einer @generatedFunktion. Aufgrund eines langjährigen Fehlers https://github.com/JuliaLang/julia/issues/25678 Dies tritt auf, wenn Sie versuchen, einen Kassettenstil-Konformer zu implementieren, der bestanden oder ähnlich ist (siehe einen Blog-Beitrag, den ich dazu geschrieben habe).

Trotzdem ist dies so unglaublich dunkel, dass ich wirklich zögere, diese Antwort zu geben. Für alle bis auf etwa ein Dutzend Menschen, die jemals versuchen werden, so etwas zu tun, ist das Vorhandensein von Rückkehr oder nicht in der letzten Aussage nur eine Frage des Stils.


4

Es ist eine Frage des Geschmacks, aber ich stark bevorzugen explizite returnAussagen in mehrzeiligen Funktionen.

Ich mache immer eine doppelte Aufnahme und bin eineinhalb Sekunden lang verwirrt, wenn ich sehe, dass in der letzten Zeile eine einzelne Variable oder ein einzelner Ausdruck für sich baumelt. Ich finde es komisch und unelegant.

Explizite returnAussagen verbessern die Lesbarkeit erheblich, imho.


3

Das ist rein stilistisch. Es ist niemals notwendig, das returnSchlüsselwort zu verwenden. Ich persönlich benutze es nicht.


1
Nun, Sie brauchen es, wenn Sie aus dem Kontrollfluss zurückkehren möchten.
Fredrik Bagge
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.