Schnelles Schreiben der Karte, Länge, Filter als Reduzieren

8

Als Übung versuche ich Map, Length und Filter als Reduce-Funktion zu schreiben.

%Vor%

Ist das die eleganteste Syntax, die ich verwenden kann, um diese Funktionen als reduzierend zu beschreiben? 2. Frage: Karte nimmt eine Funktion an f: (T- & gt; T) Grundsätzlich sagt der Typ, dass ich nur etwas vom Typ T zurückgeben kann, aber was passiert, wenn die Funktion, die ich schreibe, den Typ T in ein Bool oder Int umwandelt ... Wie erreiche ich das? Scheint, dass Karte nicht existiert

    
Seneca 30.09.2015, 18:48
quelle

2 Antworten

6

Für ein Mapping, das einen Typ T in einen (möglicherweise anderen) Typ S transformiert Verwenden Sie einfach zwei type Platzhalter:

%Vor%

Beispiel:

%Vor%

Ob das "das ist die eleganteste Syntax" ist auch a Angelegenheit der persönlichen Meinung. Wenn Sie die Methode append() ersetzen durch Array-Verkettung mit + , dann die seed -Parameter benötigt nicht variabel sein:

%Vor%

Was mit Kurznamen als

geschrieben werden kann %Vor%

Ähnlich:

%Vor%

Beachten Sie, dass eine Implementierung von map() und filter() verwendet reduce() (anstelle einer Schleife) ist ziemlich ineffektiv, weil ein neues Array in jedem Reduktionsschritt erzeugt wird. Siehe zum Beispiel

für eine Analyse. Für eine Übung (wie Sie gesagt haben) ist es in Ordnung, einfach verwende sowas nicht in der Produktion).

    
Martin R 30.09.2015, 19:11
quelle
0

Erweiterung CollectionType

%Vor%

verwenden Sie dann [1,2,3] .MyMap ({$ 0 + 1})

    
miao 18.12.2015 11:32
quelle

Tags und Links