如果在Clojure中,则执行

4
我已经创建了3个函数。每个函数连接到一个数据库,运行一个查询并显示结果。单独运行它们都很好用。但是我希望用户决定运行哪个3个以上的报告,为此他们将选择一个参数并点击执行按钮。如何在Clojure中编写嵌套的if then do语句以决定要执行哪些函数?
如果param =“reporta”,则执行functiona 否则,如果param =“reportb”,则执行functionb 否则等等等等。
我在网上搜索过,但实际上找不到一个好的示例来完成我想做的事情...非常感谢任何建议。
2个回答

11

使用condcondp

(condp = param
  "reporta"    (functiona)
  "reportb"    (functionb)
  (function-else))   

或者,您可以使用一组函数映射,只需按参数索引即可。


7
在这种情况下,您也可以使用“case”,因为被比较的内容是文字字面量。 - kotarak
我总是忘记 case。它曾经背叛过我(类不是字面量),所以我再也没有回去过 :) - Dave Ray

3

您可以使用case来解决问题:

(case param
  "reporta" (do-something-a)
  "reportb" (do-something-b)
  (else-case))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接