Идиоматические в Clojure: (падение 1-й строчки) или (остальные строчки)? - PullRequest
8 голосов
/ 11 апреля 2011

Простой вопрос здесь для Clojure.Что более идиоматично при работе со строками?Что более идиоматично при работе с другими типами данных?Что более эффективно?

(drop 1 str)

или

(rest str)

1 Ответ

26 голосов
/ 11 апреля 2011

Чем бы вы ни занимались, rest будет более эффективным, но разница будет настолько тривиальной, что неинтересной.

Убедитесь, что вы знаете, хотите ли вы rest или next, потому что в некоторых случаях это имеет значение. rest ленивее и, вероятно, чаще прав, но если вы используете rest, когда вам нужно next, результаты могут быть трудно отследить.

Для строк ... ни того, ни другого! Используйте subs, встроенный оператор подстроки:

user> (subs "hears" 1)
"ears"

rest хорошо, но это даст последовательность символов вместо строки; обычно вам будет проще разобраться со строкой, и достаточно просто превратить ее в последовательность символов через некоторое время.

...