首页 文章

Datomic中的参数查询

提问于
浏览
5

我是learning about Datomic queries并对如何做好奇"parameter queries."

这就是我想出的:

(d/q '[:find ?n ?x :where [?n :likes ?x] [(= ?x "pizza")]] 
  [['ethel :likes "sushi"]['fred :likes "pizza"]])

=> #<HashSet [[fred "pizza"]]>

这是它,还是有更简洁/惯用的方式来实现上述目标?

1 回答

  • 6

    答案在Datomic tutorial的"Advanced Queries"部分

    使用 :in 子句

    (d/q '[:find ?n ?x :in $ ?x :where [?n :likes ?x]] 
      [['ethel :likes "sushi"]['fred :likes "pizza"]] "sushi")
    
    => #<HashSet [[ethel "sushi"]]>
    

    :in $ ?x 是参数子句,尾随 "sushi" 绑定到 ?x

相关问题