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