我的ClojureScript翻译这个JS函数是否习惯?

我正在试图评估我的CLJS函数声明是否惯用。 这里是我尝试将JS函数转换为相应的CLJS函数。 (您可以忽略该function的实际内容)。

JavaScriptfunction:

var dir = require('node-dir'); function jsFunc(path) { dir.files(path, function(err, files) { if (err) throw err; files = files.filter(function (file) { return file.endsWith('.dec'); }); console.log(files); }); } 

我的翻译成ClojureScript:

 (defn cljs-func [input-path] (let [dir (node/require "node-dir")] (.files dir input-path (fn [err files] (println (.filter files (fn [file] (.endsWith file ".dec"))))))) 

对我来说似乎很好。 正如@cfrick在评论中指出的那样,你可以使代码在某些方面更加简洁(例如,使用匿名函数,这是一种惯用而且相对简单的方法)。 一旦开始有多个参数,我认为为了可读性而开始使用内联函数声明更有意义。

我也会再次@ cfrick的build议,宁愿clojurescript的filter版本和任何其他types的函数调用。 我认为你直接依赖于主机环境越less,代码变得越便携。 当然,很多clojure项目的发展趋势是在1.7版本中引入读者条件 。