Зачем строить строку Clojure, используя буквенные символы?

Я только что прочитал код и наткнулся на эту строку:

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

Это странно для меня. Последовательные литеральные символы используются вместо строки, содержащей эти символы. Я ожидал бы что-то еще как это:

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

Но это в основной библиотеке, написанной некоторыми почтенными ветеранами Clojure, что заставляет меня думать, что, возможно, есть причина. В чем причина? Спектакль? Или что?

1 ответ

Решение

Нет веской причины. Вероятно, он работает хуже, чем версия со строками, в дополнение к тому, что он уродливее. Вы могли бы также написать (join ", " [cache lru tick limit]), что было бы моим предпочтением, но я могу понять, выбрав записать это от руки. Однако использование символов вместо строк необъяснимо. Я не могу отследить коммит, который добавил эту строку, потому что репо было уничтожено и перестроено, по крайней мере, дважды, так как менялись имена, но я бы поспорил, что для этого нет веских причин. Может быть, некоторые ошибочные идеи производительности.

Другие вопросы по тегам