[解決済み] Clojureでは、リストタイプを変換する簡単な方法はありますか?
2023-02-05 06:58:08
質問
私はしばしば、ベクトルが必要なときに遅延リストを使用していることに気づきますし、その逆もあります。また、時々、私は本当にマップのセットを望んでいたのに、マップのベクトルを持つことがあります。これらのタイプの間で変換するのに役立つヘルパー関数はありますか?
どのように解決するのですか?
忘れてはならないのが、あの信頼できる古い
into
を使えば、どんなものでも
seq
と、満たして欲しい空のコンテナを受け取り、それを
into
に置く。
(into [] '(1 2 3 4)) ==> [1 2 3 4] "have a lazy list and want a vector"
(into #{} [1 2 3 4]) ==> #{1 2 3 4} "have a vector and want a set"
(into {} #{[1 2] [3 4]}) ==> {3 4, 1 2} "have a set of vectors want a map"
(into #{} [{1 2} {3 4}]) ==> #{{1 2} {3 4}} "have a vector of maps want a set of maps"
into
は
conj
のラッパーです。これは、コレクションの型に基づいて新しいエントリを適切に挿入するための基本的な抽象化です。このフローがとてもうまくいく原理は、Clojureが
コンポーザブルな抽象化
であり、この場合
into
の上に
conj
の上に、コレクションと
seq
.
上記の例は、受信者が実行時に渡される場合でもうまく構成されます。なぜなら、基礎となる抽象的なもの (
seq
と
conj
はすべてのコレクション(そしてJavaのコレクションの多くも)に対して実装されているので、より高い抽象化は多くの特別なデータ関連のコーナーケースを心配する必要はありません。
関連
-
[解決済み] clojureの "let "の例を理解しようとすること
-
[解決済み] REPLでclojureファイルを再読み込みする方法
-
[解決済み] Clojure CoreやContribでZip関数に相当するものはありますか?
-
[解決済み] Clojure、Scheme/Racket、Common Lispの違いは何ですか?
-
[解決済み] Clojure: リデュース vs. アプライ
-
[解決済み] clojureで指数を計算するには?
-
[解決済み] Clojureのdoseqとforの違いについて
-
[解決済み] ClojureのTransducersを簡単に説明できる人はいますか?
-
[解決済み] Clojureはどんなことに使えるの?[クローズド]
-
[解決済み] Lisp-1とLisp-2の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] clojureの "let "の例を理解しようとすること
-
[解決済み】ClojureでWebアプリケーションを作るには?[クローズド]
-
[解決済み] 実社会で活躍するLisp【クローズド
-
[解決済み] Lispに関するPaul Grahamの指摘を説明してください [closed].
-
[解決済み] ClojureでStringを数値に変換するにはどうしたらいいですか?
-
[解決済み] Clojure CoreやContribでZip関数に相当するものはありますか?
-
[解決済み] clojureで指数を計算するには?
-
[解決済み] Clojureのブロックコメント
-
[解決済み] コンポジュール・ルートの "ビッグ・アイデア "とは?
-
[解決済み] Clojureと他のLispsの比較 [終了しました]。