2
我写了一些c#代码,它实现了几个函数的转移。我使用它的代表。如何在C#中使用Java代理?
public delegate float Func(float x);
public Dictionary<string, Func> Functions = new Dictionary<string, Func>();
填写词典:
Functions.Add("y=x", delegate(float x) { return x; });
Functions.Add("y=x^2", delegate(float x) { return x*x; });
Functions.Add("y=x^3", delegate(float x) { return x*x*x; });
Functions.Add("y=sin(x)", delegate(float x) { return (float)Math.Sin((double)x); });
Functions.Add("y=cos(x)", delegate(float x) { return (float)Math.Cos((double)x); });
和我使用这些功能来找到他们的最大和其他一些任务。
private float maxY(params Func[] F)
{
float maxYi = 0;
float maxY = 0;
foreach (Func f in F)
{
for (float i = leftx; i < rightx; i += step)
{
maxYi = Math.Max(f(i), maxYi);
}
maxY = Math.Max(maxY, maxYi);
}
return maxY;
}
我该如何在Java中做到这一点?
我不知道如何在Java中使用委托。
看吧:HTTP:/ /stackoverflow.com/questions/122407/whats-the-nearest-substitute-for-a-function-pointer-in-java - 没有真正的代表。 – weismat 2012-03-01 10:18:12
哪个版本的java?我相信新版本的java有一些lambda支持,这可能会使代码更好。 – CodesInChaos 2012-03-01 10:22:17
@CodeInChaos lambda计划用于尚未发布的Java 8 ... – assylias 2012-03-01 10:26:45