使用来自 datomic db 的 9 个元素动态填充列表

Dynamically filling a list with 9 elements from datomic db

所以我有这样的方法:

(defn get-nine-posts []  
  (let [nine-tile ()]
   (->>
      ;;gets three posts
     (conj nine-tile (->> (get-a-bunch-of-posts)
                          (take 3)))

      ;;maybe gets three posts.. [gets somewhere between 0 and 3]
     (conj nine-tile (get-maybe-three-posts))

      ;;fill the rest of the nine-tile
     (conj nine-tile (->>  (get-posts-with-some-args 75 17)
                           (take (- 9 (count nine-tile)))) ;; $$$
     (flatten))))

它将三个列表塞在一起。我要添加的最后一个列表应该填满剩余的插槽数(有 9 个)。

但是像

 (count nine-tile)  ;; $$$

在最后一个 conj 的中间只是 returns 0。我希望它能够评估列表中已经有多少元素。我想(取)差价。

执行此操作的优雅方法是什么?

(->> (concat (take 3 (get-a-bunch-of-posts))
             (get-maybe-three-posts)
             (get-posts-with-some-args 75 17))
     (take 9))