¿Es posible almacenar diferentes tipos en la misma tabla hash (Hashtbl
) en Ocaml? ¿Las tablas hash están realmente restringidas a un solo tipo?Hashtables en ocaml
6
A
Respuesta
22
Sí, las entradas de tablas hash están restringidas a un tipo para cada tabla. Esta es realmente una pregunta sobre el sistema de tipo OCaml y no sobre las tablas hash. Si parece extraño exigir que las cosas sean del mismo tipo en una tabla hash, ¿qué tal en una lista?
Sin saber el problema que está resolviendo, es difícil saber qué sugerir. Sin embargo, una cosa común que hacer es crear un tipo algebraica que tiene una variante para cada uno de los tipos que está tratando con:
type alg = A of int | B of float
Valor de tipo (cadena, ALG) Hashtbl.t almacenaría enteros y flota, usando una cadena como la clave de búsqueda.
# let ht = Hashtbl.create 44;;
val ht : ('_a, '_b) Hashtbl.t = <abstr>
# Hashtbl.add ht "yes" (A 3);;
- : unit =()
# Hashtbl.add ht "no" (B 1.7);;
- : unit =()
# ht;;
- : (string, alg) Hashtbl.t = <abstr>
# Hashtbl.find ht "yes";;
- : alg = A 3
Después de acostumbrarse a la escritura flexible y fuerte de OCaml, es difícil volver a los sistemas sin ella.
Cuestiones relacionadas
- 1. Java array of Hashtables
- 2. ¿Cómo uso Hashtables/HashSets en .NET?
- 3. ¿Cómo lidian las HashTables con las colisiones?
- 4. Implementando hashtables en C++ (inserción y eliminación diferida)
- 5. ayuda con HashTables que contiene matrices de cadenas en C#
- 6. Tipos recursivos en OCaml?
- 7. fold_tree en OCaml
- 8. ignorar función en OCaml
- 9. Copiando campos en OCaml
- 10. Clasificación topológica en OCaml
- 11. programación modular en ocaml
- 12. compilación condicional en OCaml
- 13. paréntesis en Ocaml
- 14. temporizador genérica en OCaml
- 15. Sobrecarga en Ocaml
- 16. Funciones compuestas en ocaml
- 17. autómatas en ocaml
- 18. Expresiones regulares en OCaml
- 19. ¿Tiene! = Significado en OCaml?
- 20. Functors en Ocaml
- 21. Ocaml introducción
- 22. ocaml intérprete
- 23. ¿Por qué los índices DB usan árboles balanceados, no hashtables?
- 24. Rastreo y depuración en OCaml
- 25. Entender los funtores en OCaml
- 26. Módulos no vinculados en OCaml
- 27. Mónada de estado en OCaml
- 28. módulo usando incluyen en OCaml
- 29. sobrecarga de funciones en OCaml
- 30. Tiempo de ejecución en Ocaml