私は経路計画ロボットで作業しています。ロボットは、ubergraphを使用してオフィス内の部屋を横断し、小包を収集して配達することができます。しかし、私がルートを計画したいときに、荷物が配達されたという事実を出力したいときは、 "Delivered"メッセージがルートプランの前に出力されています。Clojure - 出力が間違った順序で表示される
私はなぜこれが起こっているのか知っています、それは私のif文などの順序のためです。しかし、私は印刷物のために考えることができるすべての場所を試してみました。
誰にでも次のコード行をどこに移動する必要があるのでしょうか。
以下に含まれる機能の完全なコードです。
(defn multipleparcels [parcel]
(def newparcel (first parcel))
(def start (:start newparcel))
(def end (:end newparcel))
(def delivery (:delivery newparcel))
(if (empty? parcel)
(println "Deliveries Completed")
(if (= delivery "Delivery")
(println "Parcel Delivered")
(println "Parcel Collected")))
(journey start end)
(multipleparcels (rest parcel)))
どのようなヒントをいただければ幸いです。
編集:私は今
(defn multipleparcels [parcel]
(let [newparcel (first parcel)
start (:start newparcel)
end (:end newparcel)
delivery (:delivery newparcel)]
(if (empty? parcel)
(println "Deliveries Completed")
(doall (journey start end)
(if delivery
(println "Parcel Delivered")
(println "Parcel Collected"))
(multipleparcels (rest parcel))))))
残念ながら、Clojureのコードにジャンプする前に、このコードで重大な間違いを犯しました(すべてを書いておきます)。Clojureのチュートリアルを確認してください。 –