Зачем строить строку Clojure, используя буквенные символы?
Я только что прочитал код и наткнулся на эту строку:
(str cache \, \space lru \, \space tick \, \space limit)
Это странно для меня. Последовательные литеральные символы используются вместо строки, содержащей эти символы. Я ожидал бы что-то еще как это:
(str cache ", " lru ", " tick ", " limit)
Но это в основной библиотеке, написанной некоторыми почтенными ветеранами Clojure, что заставляет меня думать, что, возможно, есть причина. В чем причина? Спектакль? Или что?
1 ответ
Нет веской причины. Вероятно, он работает хуже, чем версия со строками, в дополнение к тому, что он уродливее. Вы могли бы также написать (join ", " [cache lru tick limit])
, что было бы моим предпочтением, но я могу понять, выбрав записать это от руки. Однако использование символов вместо строк необъяснимо. Я не могу отследить коммит, который добавил эту строку, потому что репо было уничтожено и перестроено, по крайней мере, дважды, так как менялись имена, но я бы поспорил, что для этого нет веских причин. Может быть, некоторые ошибочные идеи производительности.