He estado usando clojure durante un par de meses y una cosa que realmente no entiendo es por qué los guiones en los nombres del espacio de nombres deben representarse como guiones bajos en el sistema de archivos. ¿Puede alguien explicarme esto y también es posible usar guiones en los nombres de los archivos?¿Por qué clojure convierte rayas en nombres para subrayar en el sistema de archivos?
Respuesta
Es una solución necesaria para la interoperabilidad de Java.
Cuando un espacio de nombre Clojure es AOT (anticipado) compilado en un archivo Java .class, debe tener un nombre que sea un identificador Java válido. Los guiones no son válidos en los nombres de clase de Java, por lo que Clojure los convierte en guiones bajos. También convierte caracteres como *
en palabras como _STAR_
.
¿Quiere decir que los archivos .class
del disco tienen guiones bajos donde las funciones en Clojure tenían guiones? Estoy seguro de que he leído que tiene algo que ver con que la JVM no admite guiones en esos nombres de archivo. (O al menos no es una garantía de que sea compatible).
Esto es solo una limitación de los nombres de los archivos de clase, y Clojure aborda de forma silenciosa este problema de todos modos. Su propio código aún puede manejar archivos con guiones en el nombre del archivo.
Disculpa que no tengo una referencia para esto ahora.
Intenté poner guiones en los archivos clj, pero mis programas clojure no pueden leer los archivos a menos que cambie los guiones para subrayar – Zubair
Sí, esto se debe a las limitaciones de JVM. Consulte http://clojure.org/libs "Los guiones en el nombre de lib se reemplazan por guiones bajos en la ruta" –
¿Qué significa la respuesta cuando dice "Su propio código aún puede manejar archivos con guiones en el nombre de archivo". ¿Esto se refiere a archivos .clj o archivos .class? – Zubair
- 1. por qué las bibliotecas clojure no intentan utilizar nombres únicos para nombres de funciones comunes
- 2. Detectar sistema operativo en Clojure
- 3. Recargar archivos Clojure en emacs
- 4. ConfigurationManager.AppSettings convierte "\ n" en "\\ n" ¿por qué?
- 5. Aumenta el error de enlace para impulsar el sistema de archivos, ¿por qué?
- 6. Necesito un widget para navegar por el sistema de archivos
- 7. ¿Cómo subrayar el texto en reStructuredText?
- 8. Crear un grupo en Xcode no crea una carpeta en el sistema de archivos, ¿por qué?
- 9. ¿Por qué Magento 1.4 incluye archivos javascript por ruta del sistema de archivos?
- 10. ¿Por qué debería usar 'aplicar' en Clojure?
- 11. Dominio AF_UNIX: ¿por qué usar solo nombres de archivos locales?
- 12. ¿Por qué no puedo vincular + en clojure?
- 13. ¿Por qué el extraño uso de ns/use con Clojure?
- 14. clojure - código de evaluación en el espacio de nombres diferente
- 15. Sistema de archivos en memoria para Windows
- 16. System.DirectoryServices no se reconoce en el 'Sistema' espacio de nombres
- 17. Firefox ... SVG ... Subrayar ... ¿cómo por el amor de Cristo?
- 18. Grep en varios archivos en el sistema de archivos Hadoop
- 19. Convierte un mapa hash al revés en Clojure
- 20. Excluir java.lang. * En el espacio de nombres Clojure
- 21. ¿Por qué mi log en el espacio de nombres estándar?
- 22. Mejores prácticas para almacenar archivos cargados en el sistema de archivos
- 23. ¿Por qué Java decodifica automáticamente% 2F en nombres de archivos codificados URI?
- 24. ¿Para qué sirve Clojure?
- 25. Convierte archivos Word doc o docx en archivos de texto?
- 26. Clojure ¿por qué usar: solamente []
- 27. Subrayar bindAll, método explícito que nombra
- 28. ¿Por qué std :: cout convierte los punteros volátiles en bool?
- 29. Windows equivalente a los espacios de nombres de Linux (montajes del sistema de archivos por proceso)?
- 30. Reemplazando clases en el espacio de nombres del sistema
¿es diferente si no es AOT? – Chris
No. La compilación de Clojure es siempre la misma. AOT-compilation simplemente escribe los archivos de clase en el disco. –