Swift Array.map-Schließungsproblem

8

Ich möchte eine Schließung verbessern, die ich mit Swifts Array.map-Funktion

geschrieben habe

Ich nehme grundsätzlich ein Array und remapping alle seine Elemente mit einer Schließung.

%Vor%

Und das funktioniert perfekt.

Aber was, wenn ich alles mit 2.1 multiplizieren möchte? oder 3,5? oder irgendeinen Wert? Mit anderen Worten, was ist, wenn ich möchte, dass die Menge, die ich multipliziere, auch eine Variable ist? Und muss es als zweites Argument in die Schließung übernommen werden?

Ich habe versucht, es folgendermaßen in die Argumentliste einzufügen:

%Vor%

und dann ändere ich meinen Aufruf:

%Vor%

aber ich bekomme alle möglichen Fehler (und ich habe natürlich alle möglichen Variationen versucht).

Was mache ich falsch?

    
sirab333 03.07.2014, 01:14
quelle

2 Antworten

12

Sie können eine Funktion höherer Ordnung verwenden, um eine benutzerdefinierte Funktion zu erstellen, die Sie dann mit der Kartenfunktion des Arrays verwenden können. So:

%Vor%     
connor 03.07.2014, 01:21
quelle
14

Bearbeiten: Hinweis: Diese Sprachfunktion wurde in Swift 2 entfernt.

Ein schnellerer Weg als Connors Antwort (aber in gleicher Weise) ist die Verwendung einer curried -Funktion. Aus der Swift-Programmiersprache- & gt; Sprachreferenz- & gt; Deklarationen- & gt; Curry-Funktionen und -Methoden:

  

Eine auf diese Weise deklarierte Funktion wird als eine Funktion verstanden, deren Rückgabe erfolgt   Typ ist eine andere Funktion.

So können Sie das vereinfachen:

%Vor%

dazu:

%Vor%

und benutze es genauso:

%Vor%     
Jack Lawrence 03.07.2014 04:29
quelle

Tags und Links