J'utilise clojure depuis quelques mois maintenant et une chose que je ne comprends vraiment pas, c'est pourquoi les tirets dans les noms d'espaces de noms doivent être représentés comme des traits de soulignement dans le système de fichiers. Quelqu'un peut-il m'expliquer cela, et est-il possible d'utiliser des tirets dans les noms de fichiers aussi?Pourquoi clojure convertit-il les tirets dans les noms en caractères de soulignement dans le système de fichiers?
Répondre
Il s'agit d'une solution de contournement nécessaire pour l'interopérabilité Java.
Lorsqu'un espace de noms Clojure est AOT (à l'avance) compilé dans un fichier .class Java, il doit avoir un nom qui soit un identificateur Java valide. Les tirets ne sont pas valides dans les noms de classes Java, donc Clojure les convertit en caractères de soulignement. Il convertit également des caractères comme *
en mots comme _STAR_
.
Voulez-vous dire que les fichiers .class
sur le disque ont des traits de soulignement où les fonctions de Clojure ont des tirets? Je suis sûr que j'ai lu que c'est quelque chose à voir avec la JVM qui ne supporte pas les tirets dans ces noms de fichiers. (Ou du moins ce n'est pas une garantie qu'il les supporte.)
Ceci est seulement une limitation des noms de fichiers de classe, et Clojure traite silencieusement ce problème de toute façon. Votre propre code peut toujours gérer les fichiers avec des tirets dans le nom de fichier.
Je suis désolée de ne pas avoir de référence pour le moment.
J'ai essayé de placer des tirets dans les fichiers clj mais mes programmes clojure ne peuvent pas lire les fichiers à moins de changer les tirets en underscores – Zubair
Oui, cela est dû aux limitations de la JVM. Voir http://clojure.org/libs "Les traits d'union dans le nom de la librairie sont remplacés par des traits de soulignement dans le chemin" –
Que signifie la réponse quand elle dit "Votre propre code peut toujours gérer les fichiers avec des tirets dans le nom de fichier". S'agit-il de fichiers .clj ou de fichiers .class? – Zubair
- 1. Python: Comment remplacer les tirets dans les noms de fichiers?
- 2. Recharger les fichiers Clojure dans emacs
- 3. RegExp pour les noms de fichiers et de dossiers propres
- 4. Le contrôle Microsoft Chart convertit \ n dans les noms de fichiers en caractères de nouvelle ligne
- 5. Renvoyer tous les caractères avant le premier caractère de soulignement
- 6. Supprimer les espaces dans les noms de fichiers apache
- 7. Quels sont tous les caractères illégaux dans le système de fichiers XFS?
- 8. Les noms de fichiers cachés dans les URL en jsp
- 9. espace de noms dans clojure
- 10. ASP.NET MVC2 Ne pas remplacer les traits de soulignement par des tirets dans HtmlAttributes
- 11. Comment j'utilise .htaccess RewriteRule pour changer les traits de soulignement en tirets
- 12. iPhone: caractères non valides dans le système de fichiers
- 13. Pourquoi mes noms de fichiers UTF-8 dans bugzilla sont-ils des noms de fichiers imprimables?
- 14. Meilleures pratiques pour stocker les fichiers téléchargés dans le système de fichiers
- 15. Convertir des nombres à double octet et des espaces dans les noms de fichiers en ASCII
- 16. Script pour supprimer les caractères spéciaux des noms de fichiers
- 17. sur les noms de fichiers dans le dossier
- 18. Pourquoi les caractères non-ascii sont-ils encore détestés dans les noms de fonction/var?
- 19. caractères spéciaux dans les noms de tâches de la file d'attente de tâches google app-engine
- 20. Java détecter les modifications dans le système de fichiers
- 21. Liste uniquement les noms de fichiers numériques dans le répertoire
- 22. Comment j'échappe aux caractères non valides dans les noms de fichiers sur plusieurs FS
- 23. Convertir les noms de fichiers en entiers
- 24. Quels sont les caractères autorisés dans un mot-clé Clojure?
- 25. tirets vs dans l'URL
- 26. Lucene recherche et caractères de soulignement
- 27. Puis-je échapper des caractères dans les noms de variables?
- 28. Modification des noms de dossier d'espace de noms/système de fichiers dans Visual Studio
- 29. Comment obtenir Resharper pour autoriser des traits de soulignement dans les noms de méthodes mais uniquement dans les tests?
- 30. Comment sécuriser les fichiers et les dossiers via C# .NET dans le système de fichiers FAT
est-ce différent c'est pas AOT? – Chris
La compilation de Clojure est toujours la même. AOT-compilation suffit d'écrire les fichiers de classe sur le disque. –