2016-12-16 7 views
1

DBからデータを取得しようとしています。データは遅延した順序で戻ってきます。私はreplのデータを見ることができ、次のようになります。レイジーシーケンスからデータにアクセスする

({:foo value1, :bar value2}) 

どうすればこのデータを取得できますか?好ましくは、どのようにマップに変換できますか?私は試しました:

(doallシーケンス(get sequence:foo)) ただnilを返します。そして

llegalArgumentException No value supplied for key: {:foo value1, :bar value2} clojure.lang.PersistentHashMap.create (PersistentHashMap.java:77) 

を返し

(apply hash-map user-settings) 

私はClojureのに非常に新しいですし、あまりにも長い道のりのために、この上で立ち往生されています。前もって感謝します。

+1

*データがレイジーシーケンスで戻ってきています* - 何のレイジーシーケンスですか? '{:foo value1、:bar value2}'で表されるレコードのシーケンスがあります。そのようなレコードがいくつかありますか?どのようにマップ/テーブルにそれらを結合したいですか?レコード内にインデックスを付けるキーがありますか? – Thumbnail

答えて

2

あなたは既に地図を持っています。リスト内の唯一のアイテムです。

(def data (first '({:foo 123 :bar 456}))) 

(:foo data) ; => 123 
+0

ありがとう!それは完璧に働いた。 – ben

0

データを見るために遅延セグメントを印刷する場合は、intoを使用することがあります。たとえば、遅延ベクトルの内容を表示する場合は、(into [] your-lazy-vector)または(into {} your-lazy-map)を使用します。

このuncool変換は、println関数またはletで行うことができます。しかし、この種のデバッグ支援をリリースやプルリクエストの前に削除することをお勧めします。

ほとんどの場合、レイジーシーケンスは素晴らしいです。

関連する問題