我正在尝试评估我的CLJS函数声明是否是惯用的。这是我尝试将JS函数转换为相应的CLJS函数。 (您可以忽略该函数的实际内容。)
JavaScript功能:
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")))))))
答案 0 :(得分:1)
对我来说似乎很好。正如@cfrick在评论中指出的那样,你可以在某些方面使代码更加简洁(例如使用匿名函数,这是惯用的,一次性使用且相对简单)。一旦你开始有多个参数,我认为为了可读性而有一个内联函数声明开始更有意义。
我还会首先考虑@cfrick关于更喜欢clojurescript的arr.sort(function(a,b){
return Math.abs(78 - a.dezibel) - Math.abs(78 - b.dezibel);
});
版本以及此类任何其他函数调用的建议。我认为您直接依赖主机环境越少,代码就变得越便携。当然,在clojure 1.7中引入reader conditionals,这些日子里许多clojure项目正在发展。