Сначала вы знаете, что в database.js существует этот код:
module.exports = function (object) {
// . . .
// some thing on object
return object;
};
, когда вам требуется этот файл JS, вы можете отправить данные объекта функции выше (пустые или не пустые)
[111 ]На самом деле C# имеет точно это.
double sqrt(double x) {
var goodEnough = new Func<double, bool>(guess =>
Math.Abs(square(guess) - x) < 0.001
);
var improve = new Func<double, double>(guess =>
average(guess, x / guess)
);
var sqrtIter = default(Func<double, double>);
sqrtIter = new Func<double, double>(guess =>
goodEnough(guess) ? guess : sqrtIter(improve(guess))
);
return sqrtIter(1.0);
}
Как сказанная Справедливость, можно сделать это с C# 3.5 и лямбдами; если бы у Вас есть C# 2.0, можно использовать анонимные функции, хотя это было бы несколько менее сексуально:
double sqrt(double x) {
Func<double, bool> goodEnough = delegate(double guess) {
return Math.Abs(square(guess) - x) < 0.001;
};
Func<double, double> improve = delegate(double guess) {
return average(guess, x / guess);
};
Func<double, double> sqrtIter = null;
sqrtIter = delegate(double guess) {
return goodEnough(guess) ? guess : sqrtIter(improve(guess));
};
return sqrtIter(1.0);
}
Править: Я забыл, Func не определяется в C# 2.0, таким образом, необходимо определить его сами:
public delegate TResult Func<T, TResult>(T guess);