Je voudrais fournir une implémentation Clojurescript de vecteur basée sur Javascript Typed Arrays, qui supporte assoc, replace etc. Je pense que je veux faire ça (peut-être y at-il un meilleur moyen, ou peut-être que quelqu'un l'a fait?). Je suppose que j'utiliserais deftype, mais pour quels protocoles devrais-je fournir des "concrétions"?Comment utiliser deftype pour implémenter une structure associative dans Clojurescript
Répondre
Voyons ce que les vecteurs intégrés implémentent. Vous pouvez afficher la source here, on github.
On dirait qu'il est: Object
, IWithMeta
, IMeta
, IStack
, ICollection
, IEmptyableCollection
, ISequential
, IEquiv
, IHash
, ISeqable
, ICounted
, IIndexed
, ILookup
, IMapEntry
, IAssociative
, IVector
, IReduce
, IKVReduce
, IFn
, IEditableCollection
et IReversible
.
Cela fait beaucoup, mais puisque chacun d'entre eux définit une ou deux méthodes au plus, cela ne demande pas beaucoup de travail. De plus, vous pouvez laisser certains d'entre eux non implémentés, comme IEditableCollection
qui est seulement utilisé pour les transitoires ou IReduce
qui est pour les nouvelles fonctions de réducteurs.
Vous n'avez même pas à faire fonctionner votre nouvelle structure de données exactement comme un vecteur intégré. Vous pourriez lui faire mettre en œuvre toutes les choses séquentielles et ne pas s'inquiéter de la carte, par exemple, bien que, bien sûr, il serait moins pratique qu'un vecteur normal.
- 1. Extension du constructeur d'une DEFTYPE dans clojurescript
- 2. Comment utiliser ClojureScript pratiquement?
- 3. DEFTYPE contre defrecord
- 4. Utiliser "extern" s dans Clojurescript
- 5. Quand dois-je utiliser deftype dans Clojure?
- 6. Comment utiliser core.match dans Clojurescript avec goog.events.KeyCodes?
- 7. ClojureScript utiliser .requestFullscreen sur une vidéo
- 8. Comment implémenter l'opérateur <pour une structure arbitraire à utiliser dans les structures de données STL?
- 9. Comment utiliser clojure.string/joindre à clojurescript
- 10. comment utiliser postThreadMessage pour passer une structure
- 11. Comment utiliser une structure dans une autre structure?
- 12. Comment créer une nouvelle image dans ClojureScript
- 13. Vérifier NaN dans ClojureScript
- 14. Comment obtenir un DEFTYPE récursive
- 15. Comment implémenter des pointeurs char dans une structure de noeud?
- 16. Solutions de contournement pour utiliser ClojureScript avec OpenJDK?
- 17. Utilisation du protocole Clojurescript?
- 18. Document.write dans Clojurescript?
- 19. WebSQL dans ClojureScript?
- 20. Clojure DEFTYPE et protocole
- 21. Quelle est la meilleure structure pour implémenter une carte d'identité?
- 22. Implémenter la structure multilingue dans CodeIgniter
- 23. Pourquoi utiliser typedef pour déclarer une structure?
- 24. Utiliser des pointeurs vides pour implémenter une pile générique?
- 25. meilleure structure Graphique pour implémenter Dijkstra dans prolog
- 26. Comment utiliser correctement la syntaxe d'initialisation pour initialiser une structure?
- 27. Utiliser mongoimport pour lire le CSV dans une structure imbriquée?
- 28. Affectation d'interopérabilité Javascript dans Clojurescript
- 29. Insertion SQL pour remplir une table associative avec des conditions
- 30. Implémenter une structure de table dans l'application Blackberry