2 Stimmen

Wie man "get" in Clojure überlädt

Ich möchte das Clojure-Schlüsselwort "get" für meine eigene Funktion verwenden. Wie kann ich Clojure daran hindern, das in den Standardbibliotheken definierte "get" zu verwenden?

4voto

Wodin Punkte 3094

Wie bereits erwähnt, ist dies nicht unbedingt eine gute Idee, aber Sie können es so machen:

user=> (ns your.name.space
  (:refer-clojure :exclude [get]))
nil
your.name.space=> (defn get [] "something")
#'your.name.space/get
your.name.space=>

4voto

Joost Diepenmaat Punkte 17508

Ich würde nicht empfehlen, mit get für alles, aber immer einen Wert aus einer Sammlung, da das ist, was jemand lesen Ihren Code erwarten würde es zu tun.

Wenn Sie das nicht tun wollen, Wodin Die Antwort ist das, was Sie wollen.

Wenn Sie tatsächlich "überladen" get wie pro Ihren Titel, das heißt, machen die Standard-Get-Funktion mit Ihrem eigenen Sammlungstyp arbeiten - stellen Sie einfach sicher, dass Ihre Sammlung ILookup, Map oder IPersistentSet implementiert und Sie können Ihre eigene get/valAt-Methode bereitstellen.

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