6 Stimmen

Gibt es einen Namen für diese Syntax getSomeValues()[0]?

Wenn eine Funktion ein Array zurückgibt, wird in einigen Sprachen das Array nicht in einer Variablen gespeichert, sondern ein einzelnes Element abgerufen, wie hier:

var someValues = getSomeValues();
var firstElement = someValues[0];

Sie können stattdessen die Array-Index-Notation direkt nach dem Funktionsaufruf verwenden, um das Element des zurückgegebenen Arrays abzurufen, etwa so:

var firstElement = getSomeValues()[0];

Wie nennt man dieses Konstrukt oder diese Syntax? Hat es überhaupt einen speziellen Namen?

3voto

Oded Punkte 475566

Sie können die Array-Index-Notation direkt beim Funktionsaufruf verwenden, um das Element abzurufen

var firstElement = getSomeValues()[0];

Was Sie tun, ist der Zugriff auf das indizierte Element des Arrays/der Sammlung, das/die von der Funktion zurückgegeben wird. Sie greifen nicht direkt auf einen Index in einer Funktion zu.

Ich würde dies als "Verkettung" eines Indexers mit dem Rückgabewert bezeichnen.

2voto

Eton B. Punkte 5803

Array-Dereferenzierung

1voto

ChaosPandion Punkte 75527

Ich verwende den Begriff Nachschlagen .

1voto

Adrian Regan Punkte 2240

Eh.. Gefährlich ...??

Wenn das zurückgegebene Array keine Elemente enthält.

Es ist eine schlechte Angewohnheit zu bekommen, wenn es um den Umgang mit Arrays, javascript beiseite wie pro Kommentar kommt.

Ansonsten ist die Idee bekannt als Methodenverkettung '

1voto

P Shved Punkte 90784

Ich glaube, es hat keinen besonderen Namen. Sie greifen einfach auf das erste Element eines zurückgegebenen Arrays zu. In vielen Sprachen gibt es nichts Besonderes in einer Funktion, die ein Array zurückgibt.

In Ihrem Fall sind Sie nicht Anwendung [] (Indizierungs-)Operator zu einem Funktionsaufruf . Stattdessen wenden Sie sie auf das zurückgegebene Array an. Mit Vorrang sieht das so aus.

var firstElement = ( getSomeValues() )[0];

Es ist also nichts Besonderes.


Es gibt jedoch noch ein anderes Muster, um das erste Element zu erhalten, das mit der funktionalen Programmierung zusammenhängt. Zum Beispiel:

($first_value, @rest_of_list) = getSomeValues();  # Perl

let first::rest = getSomeValues () in ...         (* OCaml *)

Dies speichert den ersten Wert einer Liste (technisch gesehen, nicht eines Arrays) in $first_value und der Rest wird in der Array-Variablen gespeichert. Diese Array-Variable kann weggelassen werden, und dann erhalten Sie nur den ersten Wert.

($first_value) = getSomeValues();        # Perl

let first::_ = getSomeValues () in ...   (* OCaml *)

Das allgemeinere Konzept, von dem das oben Gezeigte nur ein Spezialfall ist, lautet Mustervergleich ( mehr zum Musterabgleich ). In einigen funktionalen Sprachen (keine der oben gezeigten, aber in Haskell, zum Beispiel) ist es anders: es berechnet tatsächlich nur das erste Element und lässt den Rest der Liste nicht auswerten.

In dem von Ihnen gezeigten prozeduralen Code gibt es jedoch nichts, was als Mustervergleich in Frage käme.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X