2つのベクトルを比較しようとすると、その差を別のベクトルに格納しようとします。オブジェクト内のIFステートメント内にネストされた結果を格納する
;Data Set 1
{{:SKU "Apple" :QTY 10 :Status "In Stock" }
{:SKU "Banana" :QTY 10 :Status "In Stock" }
{:SKU "Mango" :QTY 0 :Status "Out of stock"}
{:SKU "XYZ" :QTY 10 :Status "In Stock" }
{:SKU "Grapes" :QTY 10 :Status "In Stock" }}
;Data Set 2
{{:SKU "Apple" :QTY 5 :Status "In Stock" }
{:SKU "Banana" :QTY 0 :Status "Out of Stock"}
{:SKU "Mango" :QTY 10 :Status "In Stock" }
{:SKU "XYZ" :QTY 10 :Status "In Stock" }
{:SKU "Pineapple" :QTY 10 :Status "In Stock" }}
私は、ネストされたdoseqを用いた論理を構築しようとしているが、私はClojureの内の変数に書き込む方法がわからない
{{:SKU "Apple" :Reason "Stock Change -5" }
{:SKU "Banana" :Reason "In Stock +10" }
{:SKU "Mango" :Reason "Out of stock -10" }
{:SKU "Grapes" :Reason "Missing" }
{:SKU "Pineapple" :Reason "Added" }}
のような出力を取得しようとしています。
(defn compare_two_vectors
[data_set1 data_set2]
(doseq [recent_item data_set1]
(doseq [old_item data_set2]
(if (= (recent_item :SKU) (old_item :SKU))
(let [diffresults (clojure.data/diff recent_item old_item)
old_file (second diffresults)
new_file (first diffresults)
current_sku (recent_item :SKU)
]
;; How do I store results into a persistant variable?
)))))
それから私は
(println (compare_two_vectors data_set1 data_set2))
の更新を行うことができますか、私はより良い選択肢が何であるかを知ってみましょう。私はまだclojureに関してnewbです:(
あなたのデータはトップレベルのマップです。それらは集合(またはベクトルまたはリストまたは...)でなければなりません。 – Thumbnail