返す値を延期した関数を実装しています。関数内には、ネストされた条件式が多数あります。
例えば:
deferred = Q.defer()
FS.readFile("foo.txt", "utf-8", (error, text) ->
if error
deferred.reject(new Error(error))
else
deferred.resolve(text)
)
return deferred.promise
コンパイルされるよりも:
var deferred;
deferred = Q.defer();
FS.readFile("foo.txt", "utf-8", function(error, text) {
if (error) {
--> return <-- deferred.reject(new Error(error));
} else {
--> return <-- deferred.resolve(text);
}
});
return deferred.promise;
最後の戻り値だけが必要ですが、if / elseの戻り値は必要ありません(つまり、コンパイルされたコードでは-> return <- )
CoffeeScriptコンパイラのこのような動作(不要な場合は暗黙的に返される)を回避するにはどうすればよいですか?