2014-07-13 5 views
4

Je lisais un code tout à l'heure, et je suis tombé sur this line:Pourquoi construire une chaîne Clojure en utilisant des caractères littéraux?

(str cache \, \space lru \, \space tick \, \space limit) 

C'est étrange pour moi. Les caractères littéraux consécutifs sont utilisés, au lieu d'une chaîne contenant ces caractères. J'attends quelque chose comme ceci:

(str cache ", " lru ", " tick ", " limit) 

Mais ceci est en a core library écrit par certains anciens combattants Clojure vénérables, qui me fait penser que peut-être il y a une raison. Quelle est la raison? Performance? Ou quoi?

+1

Je suppose que le choix stylistique. Plus d'une fois, j'ai pensé: "Je déteste ces citations stupides." – deadghost

Répondre

6

Il n'y a pas de bonne raison. Il fonctionne probablement moins bien que la version avec des cordes, en plus d'être plus laide. Vous pouvez également écrire (join ", " [cache lru tick limit]), ce qui serait ma préférence, mais je peux comprendre le choix de l'écrire à la main. Utiliser des caractères au lieu de chaînes est inexplicable, cependant. Je ne peux pas retrouver le commit qui a ajouté cette ligne, car le repo a été détruit et reconstruit au moins deux fois en changeant de nom, mais je parierais qu'il n'y avait pas de bonne raison. Peut-être quelques idées de performance mal orientées.

Questions connexes