使用Clojure,我将一些数据从SQLite DB中提取出来。它将以地图列表的形式到达。以下是数据外观的缩写示例。
(
{:department-id 1 :employee-firstname "Fred" :employee-lastname "Bloggs"}
{:department-id 1 :employee-firstname "Joe" :employee-lastname "Bloggs"}
{:department-id 2 :employee-firstname "John" :employee-lastname "Doe"}
...
)
我想重塑一下这样的事情:
(
{:department-id 1 :employees [{:employee-firstname "Joe" :employee-lastname "Bloggs"} {:employee-firstname "Fred" :employee-lastname "Bloggs"}]}
{:department-id 2 :employees [{:employee-firstname "John" :employee-lastname "Doe"}]
...
)
我知道我可以编写一个功能,处理部门,然后是员工和#34;粘合"他们回到一起,以达到我想要的形状。事实上,我在REPL中做到了这一点。
但我最近听说过有关传感器的一些信息,并且想知道这是一个使用传感器的机会。
如果是,代码会是什么样子?
答案 0 :(得分:1)
我有一个去,但像我们许多人一样,我仍然围绕着这个。
从我对传感器的阅读来看,真正的好处似乎是避免了创建中间集合的需要,从而提高了效率。这意味着要回答你的问题,你真的需要看看你的代码将做什么以及它是如何构建的。
例如,如果您有类似
的内容( - >> (地图......) (过滤..) (地图..) (地图..))
正在按顺序运行这些函数,并在每个集合之后创建新集合以进入下一个集合。但是,对于传感器,您最终会得到像
这样的东西( - >> (地图......) (地图..) (过滤..) (地图......))
其中应用于数据的函数以pipline方式应用于原始集合中的每个项目,您无需生成中间集合。
在您的情况下,我不确定它会有所帮助。这部分是因为我不知道你应用的其他转换,但主要是因为你想要的是一个状态跟踪级别,即员工数据的分组。这是可能的,但我相信这会让它变得更难一点。