Gibt es eine Standardfunktion, die ein Diktat und eine Liste von Schlüsseln annimmt und die Liste der entsprechenden Werte zurückgibt?

8

Ich suche nach etwas, das select-keys :

%Vor%

Es ist nicht besonders schwer zu implementieren, obwohl ich noch nicht versucht habe, einen guten Namen zu finden:

%Vor%

Kenne ich eine Standardfunktion, die genau dieses Bedürfnis erfüllt? Wenn nicht, haben andere Sprachen - zB Python, Ruby, Haskell - einen Namen für diese Funktion?

    
Josh Tilles 28.05.2013, 22:14
quelle

5 Antworten

10

Maps sind Funktionen, die auf ihren Tasten funktionieren:

%Vor%

Wenn Sie das Ergebnis als Vektor haben möchten, verwenden Sie einfach vec oder into [] ... oder ersetzen Sie map durch mapv .

    
JohnJ 28.05.2013 22:54
quelle
3

Schlüsselwörter sind selbst Funktionen (sie implementieren IFn ) und sie können sich selbst in eine Map sehen und den Wert zurückgeben, so dass eine Option wäre juxt :

zu verwenden %Vor%

Im Grunde wird dein gewünschter fn jetzt:

%Vor%     
Ankur 29.05.2013 04:27
quelle
3

map ist die Funktion, nach der Sie suchen:

%Vor%

Das funktioniert, weil die Hashmap selbst als Funktion arbeitet (d. h. implementiert clojure.lang.IFn ), die den Wert für jeden Schlüssel zurückgibt, den sie erhalten hat.

    
mikera 29.05.2013 07:09
quelle
3
%Vor%     
Michiel Borkent 29.05.2013 07:45
quelle
1

Jay Fields untersucht diese Funktion und ein paar andere Verwandte in einem aufschlussreichen Blogpost @ Ссылка .

(Ich habe das zufällig vor ein paar Minuten gefunden, als ich nach "Auswahltasten" gesucht habe.)

Ich würde immer noch gerne wissen, ob es irgendwo eine "kanonische" Implementierung gibt, also lasse ich die Frage offen.

    
Josh Tilles 28.05.2013 22:15
quelle

Tags und Links