Ich bin ein wenig verwirrt darüber, ob ich Clojure-Multimethoden nur für Clojure-Strukturen verwenden kann, die durch Java-Klassen repräsentiert werden, oder kann ich Multimethods auf Strukturen oder andere Eigenschaften anwenden?Kann ich Clojure Multimethods nur für Java-Klassen verwenden?
2
A
Antwort
4
Es ist sehr häufig Multimethoden zu entwickeln, die auf die Versendung Klasse des ersten oder einzigen Arguments In diesem Fall kann die "Klasse" eine Java-Klasse, ein Datensatz (defrecord erzeugt eine Java-Klasse) oder sogar ein interner Clojure-Typ wie ISeq sein.
Sie können auch auf eine versenden arbiträre Funktion der Argumente, die an die Funktion übergeben werden, zB könnten Sie eine Funktion berechnen und weiterleiten ein Schlüsselwort, wenn Sie wollten.
3
Sie können Multimethoden auf einer beliebigen Funktion der Argumente versenden (die Funktion als zweites Argument zu defmulti
übergeben wird. http://clojure.org/multimethods liefert weitere Details.
2
Sie können Ihre Multimethods Versand auf jede Funktion, die Sie wählen.
Verwandte Themen
- 1. Multimethods Leistung
- 2. Wie kann ich eine Sitzung für beide Clojure/Skript verwenden
- 3. Kann ich ASP.NET Core Targeting nur für .NET 4.6.1 verwenden?
- 4. Warum kann ich in Clojure core.logic keine Threading-Makros verwenden?
- 5. Kann ich Clojure-Funktionen als Lambdas in Java 8 verwenden?
- 6. Wie kann ich Clojure-CLR auf Unity3d verwenden?
- 7. Clojure mutimethods für den Versand nach Typ
- 8. Clojure für Handelsstrategien
- 9. Ich kann clojure-contrib nicht laden - FileNotFoundException
- 10. Wie kann ich Komponententests für private clojure-Funktionen schreiben?
- 11. Anwendungsfälle für Clojure in Projekten
- 12. Wo kann ich DrawInRect für Strings verwenden?
- 13. Warum kann ich + in clojure nicht binden?
- 14. Kann ich Felder zu Clojure-Typen hinzufügen?
- 15. Kann ich Sidekiq für kontinuierliche Prozesse verwenden?
- 16. Kann ich '> =' für NSComparisonResult verwenden?
- 17. Warum akzeptiert Clojure für Makro nur einen Körperausdruck?
- 18. Kann ich einen ternären Operator mit nur einem Ergebnis verwenden?
- 19. Kann ich eine iPhone-Anwendung entwickeln, die mein Unternehmen nur für interne Mitarbeiter verwenden kann?
- 20. Kann ich nur Office Web Apps Server verwenden
- 21. Clojure stellvertretend für Byte-Array
- 22. ACRA-Ausnahme Kann nur niedrigere 16 Bit für Anforderungscode verwenden
- 23. Wie kann ich ein Makro in Clojure abbilden?
- 24. Wann sollte ich den Deftype in Clojure verwenden?
- 25. Kann ich Variablen für Selektoren verwenden?
- 26. Wie kann ich valgrind für Speicherprofil verwenden
- 27. Welches Grafikformat kann ich für Ebenen verwenden?
- 28. Kann ich NSURLSessionUploadTask für Offline-Synchronisierungsaufgaben verwenden?
- 29. Wie kann ich Environment.newLine für Newtonsoft.Json.Compact verwenden?
- 30. Kann ich https für lokale Entwicklung verwenden?