F#提供了一个特性,即一个函数可以返回另一个函数。
一个在F#中生成函数的示例是:
let powerFunctionGenarator baseNumber = (fun exponent -> baseNumber ** exponent);
let powerOfTwo = powerFunctionGenarator 2.0;
let powerOfThree = powerFunctionGenarator 3.0;
let power2 = powerOfTwo 10.0;
let power3 = powerOfThree 10.0;
printfn "%f" power2;
printfn "%f" power3;
我能想到的在C#中实现相同功能的最佳方法是这样的:
class Program
{
delegate double PowerOf2(double exponent);
delegate double PowerOf3(double exponent);
delegate double PowerOfN(double n, double exponent);
static void Main(string[] args)
{
PowerOfN powerOfN = (a, b) => { return Math.Pow(a,b) ; };
PowerOf2 powerOf2 = (a) => { return powerOfN(2, a); };
PowerOf3 powerOf3 = (a) => { return powerOfN(3, a); };
double result = powerOf2(10);
Console.WriteLine(result);
result = powerOf3(10);
Console.WriteLine(result);
}
}
有没有其他方法(/更好的方法)来完成这个任务?
powerFunctionGenerator
等效地写为let powerFunctionGenarator baseNumber exponent = baseNumber ** exponent
。 - Stephen Swensen