この不自然な例に似た CoffeeScript 関数を作成しました。
my_func = (a, b, use_args = false) ->
if use_args?
other_func 'foo', a, b, 'bar'
else
other_func 'foo', 'bar'
これは、次の JavaScript にコンパイルされます。
var my_func;
my_func = function(a, b, use_args) {
if (use_args == null) {
use_args = false;
}
if (use_args != null) {
return other_func('foo', a, b, 'bar');
} else {
return other_func('foo', 'bar');
}
};
への重複呼び出しを排除するこの関数への DRY アプローチはありother_func
ますか? 何かのようなもの:
my_func = (a, b, use_args = false) ->
other_func 'foo', a if use_args?, b if use_args?, 'bar'
しかし、それは実際に構文的に正しいですか?うまくいけば、ここで明らかな何かが欠けていません。CoffeeScript がこれを行うための便利な方法を提供しているかどうか、または使用すべきより優れた JavaScript パターンがあるかどうかはわかりません。
ちなみに、other_func
別のパラメーターを使用するように変更することはできません。実際に_gaq.push()
は、追跡情報をキューに追加する Google アナリティクス ライブラリの一部であるためです。