私はJavaScriptの「翻訳者」を探しています.CoffeScriptのように、たとえばforEach
(Groovyに触発されて)動作します.
myArray.forEach() -> val, idx {
// do something with value and idx
}
JavaScript に翻訳:
myArray.forEach(function(val, idx){
// do something with value and idx
});
またはもっと便利なもの...
function event(cb){
foo()-> err, data1;
bar(data1)-> err, data2;
cb(data2);
}
メソッドはカプセル化されています。
function event(cb){
foo(function(err,data1){
bar(data1, function(err, data2) {
cb(data2);
});
});
}
このような JavaScript に似た "コンパイラ" はまだ存在しないのでしょうか?
とてもクールなことは何でしょう... nodejsの私のコードはほとんど次のようになります:-)
function dealer(cb){
async.parallel([
function(pcb){
async.watterfall([function(wcb){
first(function(a){ wcb(a); });
}, function(a, wcb){
thirt(a, function(c){ wcb(c); });
fourth(a, function(d){
// dealing with “a” as well and nobody care my result
});
}],
function(err, array_with_ac){
pcb(array_with_ac);
});
}, function(pcb){
second(function(b){ pcb(b);});
}], function(err, data){
cb(data[0][0]+data[1]+data[0][1]); // dealing with “a” “b” and “c” not with “d”
});
}
しかし、コードがどれほど美しく読みやすいかを見てください。
function dealer(cb){
first() -> a;
second() -> b;
third(a) -> c; // dealing with “a”
fourth(a) -> d; // dealing with “a” as well and nobody care about my result
cb(a+b+c); // dealing with “a” “b” and “c” not with “d”
}
はい、これは、トランスレーターが自動決定し、メソッドを並行して実行する必要があり、別のメソッドの終了後にメソッドを呼び出す必要がある場合に理想的なケースです。私はそれが動作していることを想像することができます
お願いします、あなたは似たようなことを知っていますか?