19

私はClojureが初めてです。ばかげた質問でしたらすみません!

項目の順序を気にしない場合は、ベクターまたはリストの代わりにセットを使用する必要がありますか? 順序が不要な場合、これら 3 つを決定する一般的な基準は何ですか?

4

3 に答える 3

22

それは本当にアイテムをどのように使用するかによって異なります。

  • アイテムを探すならセットで。
  • 順次処理する場合は、リストを使用します。
  • 均等なサイズのチャンクに切り刻む場合 (並べ替え中など) は、ベクターを使用します。
  • 長さを数える必要がある場合は、ベクトルを使用します。
  • これらを手で入力する場合は、ベクターを使用してください (引用を少し節約するため)。

実際には、私が目にするほとんどの処理には、データを に変換するseq処理が含まれているため、リストとベクトルの区別は、多くの場合、個人的な好みの問題です。

于 2013-02-02T00:31:16.723 に答える
9

一般に、主な関心事が「これはこのグループに属しているか?」である場合は、セットが必要です。順序を保持しないだけでなく、セットは指定された値を 1 回だけ保持します。したがって、値の正確な配置に関心がある場合は、ベクターの方が適しています。主にメンバーシップのテストに関心がある場合は、セットの方が適しています。

于 2013-02-02T00:30:51.943 に答える
3

はい、セットでご利用ください。他のもの (パフォーマンス、メモリ使用量など) を選択する非常に正当な理由がない限り、セットは正しい選択です。

プログラミングとは、主にコードを読む人間とのコミュニケーションであり、コンピューターとのコミュニケーションではないことを忘れないでください。セットを使用することで、要素の順序が無関係であることが完全に明確になり (また、値が重複することを期待していない)、読者があなたの意図とあなた自身の精神的な考え方を理解するのに役立ちます。

于 2013-02-02T00:32:12.543 に答える