我使用外部库,并将其传递给我写的函数。像这样的东西,例如:
(ext-func my-func) ...
my-func
需要提供一些数据来进行计算。我看待它的方式,我有两个基本选择:
1)以接受我的数据的方式写my-func
,然后返回一个函数,当外部库调用它时,它将通过闭包将数据绑定到它。例如:
(defn my-func
[mydata]
(fn []
(... access to mydata via closure ... )))
(ext-func (my-func somedata))
2)不要从my-func
返回函数,但在将数据传递给ext-func
时将数据绑定到该函数:
(defn my-func
[mydata]
(... evaluate, use mydata, etc.))
(ext-func (partial my-func somedata))
我想如果我打算如何使用该功能,可以回答使用哪一个。如果我要在其他地方使用它,我可能不想返回一个功能,例如。但是,所有其他事情都是平等的......
......其中哪一种更惯用?