嗨,
我正在学习更多关于传感器的内容,但遇到了一些死胡同。
我想了解的是,它们是否适合使用(在我的用例中,但也是作为一个学习练习),以及我所做的是否正确/效率高/或许还有更好的方法。
假设我的数据结构是这样的
(def trip {:tripData
{:segments [{:dataPoints
[{:location {:lat 1 :lng 2}}
{:location {:lat 3 :lng 4}}]}]}})
可能有数百/数千个数据点,每个数据点只有一个位置。
我想高效地将纬度和经度提取到一个单独的集合中,并以字符串的形式组成。我提出了以下这个
(def xf
(comp
(mapcat :dataPoints)
(map :location)
(map (fn [{lat :lat lng :lng}] (str lat " " lng)))))
然后通过以下方式评估
(def lat-lng (into [] xf (->> trip :tripData :segments)))
我得到了这样的一些东西
["1 2" "3 4"]
然后(出于练习目的),我可以这样做
(clojure.string/join ", " lat-lng)
从而最终得到这个
"1 2, 3 4"
这都还好 :-)
然而,鉴于我对传感器的经验不足,我开始怀疑是否有不同的/更好的方法。例如,年在 中以将数据转换为字符串和最终连接到一起,而不是使用 clojure.string/join。
我还发现,我可以这样做,而不使用传感器
(def lat-lng-2 (->> trip
:tripData
:segments
(mapcat :dataPoints)
(map :location)
(map (fn [{lat :lat lng :lng}] (str lat " " lng)))))
结果,使用 clojure.string/join 结束时会得到相同的结果。
然而,我的理解是,你不能使用一个 map 关键字(即,:tripData, :segments),因为关键字不是传感器。
我在如何使这个更高效/更好的同时了解如何使用传感器方面感到困惑。
我将非常感激任何帮助/指导/反馈!
谢谢。