Clojure список против вектора и набора - программирование
Подтвердить что ты не робот

Clojure список против вектора и набора

Я новичок в Clojure. Извините, если это глупый вопрос!

Должен ли я использовать набор вместо вектора или списка каждый раз, когда меня не интересуют порядок элементов? Каковы общие критерии для выбора между этими тремя, когда заказ не нужен?

4b9b3361

Ответ 1

Это зависит от того, как вы будете использовать элементы.

  • Если вы будете искать элементы, используйте набор.
  • Если вы будете обрабатывать его последовательно, используйте список.
  • Если вы будете рубить его на четные куски (например, при сортировке), используйте вектор.
  • Если вам нужно подсчитать длину, используйте вектор.
  • Если вы наберете их вручную, используйте вектор (чтобы сохранить небольшое цитирование)

На практике большая часть обработки, которую я вижу, включает в себя преобразование данных в seq и обработку, поэтому различия между списком и вектором часто являются личным вкусом.

Ответ 2

В общем, вам нужен набор, когда ваша основная проблема заключается в следующем: "Это вещь в этой группе?" Кроме того, не сохраняя порядок, множества также сохраняют только одно значение. Поэтому, если вы заботитесь о точном размещении значений, вектор больше того, что вы хотите. Если вы в основном заботитесь о тестировании членства, более подходящим является набор.

Ответ 3

Да, используйте набор. Если у вас нет очень-очень веских причин, чтобы выбрать что-то другое (производительность, использование памяти,...), это правильный выбор.

Помните, что программирование в основном связано с общением с человеческим читателем вашего кода, а не с компьютером. Используя набор, вы полностью понимаете, что порядок элементов не имеет значения (и вы не ожидаете повторяющихся значений), помогая читателю понять ваши намерения и ваш собственный ментальный разум.