我有一些用 Clojure 编写的测试。这是一个简单的例子:
(defn test1
[]
(start-server)
(run-pvt-and-expect "PVT-0")
(stop-server)
)
我想返回“run-pvt-and-expect”的结果,但我需要在它之后执行其他函数。我怎样才能在 clojure 中以函数式的方式做到这一点(不使用像“let”这样的结构)?谢谢。
注:我读过this https://stackoverflow.com/questions/7491360/how-do-you-return-from-a-function-early-in-clojure问题及其答案,但无法将其应用于我的案例。另外,评论要求提供从未给出的示例,因此请将此视为示例......
您可以使用finally 块来完成此操作。
(try
(+ 2 3)
(finally (+ 6 7)))
产生的结果是 5 而不是 13。
这是相关的文档页面。 http://clojure.org/special_forms#try相关部分是:
任何finally表达式都会被评估其副作用。
另一种选择是编写一个类似 with-open 的宏来启动和停止服务器,同时返回正确的结果。尽管这只是将问题转移到如何编写宏上,因为它需要使用上面的 let 或 try finally 结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)