2013-02-02 20 views
16

Clojure'a yeniyim. Aptalca bir soru olsaydı özür dilerim!Clojure listesi vs vektör vs set

Öğelerin sırasını umurumda değilken vektör veya set yerine bir küme kullanmalı mıyım? Sipariş gerekli olmadığında bu üç arasında karar vermek için ortak kriter nedir?

+1

Teşekkürler çocuklar, tüm mükemmel cevapları her cevapta bıraktım. – Blacksad

cevap

19

Öğeleri nasıl kullanacağınıza bağlı olarak değişir.

  • Öğeler için arama yapıyorsanız, bir set kullanın.
  • Eğer işlem yapacaksanız, sıralı olarak bir liste kullanın.
  • Bir ebatta, bir vektörü kullanarak (boyutlandırma yaparken olduğu gibi) eşit boyutta parçalara ayırırsanız.
  • Uzunluğunu saymanız gerekiyorsa, bir vektör kullanın.
  • Eğer Uygulamada

(alıntı biraz kaydetmek) bir vektör kullanılması elle bu yazarak edilecektir ben seq ve işleme veri dönüm içerir bkz işlemenin en o liste arasında öylesine ayrımlar ve vektör genellikle bir meselenin kişisel tadıdır.

+3

Takımlar da sayılır. – amalloy

+1

Listeler de sayılır. – kotarak

9

Genel olarak, birincil endişeniz "Bu şey bu grupta mı?" Düzeni korumanın yanı sıra, kümeler de sadece belirli bir değeri tutar. Bu yüzden, değerlerin kesin yerleşimini önemsiyorsanız, bir vektör istediğiniz daha fazladır. Esas olarak üyeliğin test edilmesini önemsiyorsanız, bir set daha uygundur.

2

Evet, bir küme kullanın. Başka bir şey seçmek için çok, çok iyi nedenleriniz olmadıkça (performans, hafıza kullanımı, ...) set doğru seçimdir.

Programlamanın öncelikle kodun insan okuyucusuyla iletişim kurmasıyla ilgili olduğunu ve bilgisayarla iletişim kurmayı unutmayın. Bir seti kullanarak, okuyucunun emrinizin ve aklınızdaki zihinsel zihninizi anlamasına yardımcı olmak için öğelerin sırasının alakasız olduğunu (ve yinelenen değerler beklemiyorsanız) tamamen açık hale getirmiş olursunuz.

İlgili konular