gpt4 book ai didi

java - C# 中关于 => 的不熟悉且奇怪的语法

转载 作者:行者123 更新时间:2023-12-01 21:50:11 24 4
gpt4 key购买 nike

我正在尝试将开源 C# 程序的一部分移植到 java 中,并且遇到了一段完全没有意义的代码,我无法在网上找到任何语法解释,并且没有工具提示或甚至 MCVS 中给出的运算符名称,以进行更具体的搜索。

branch 是一种“Particle3D”类型,表示 3d 位置和旋转。行为是 void 函数(Particle3D)的委托(delegate)(我已将其替换为 java 中的简单抽象类)。

根据 Visual Studio 的说法,b 是一个临时的 Particle3D。

这里到底发生了什么?看起来这是将一个 Particle3D 分配给一个委托(delegate),该委托(delegate)代表一个以 Particle3D 作为参数的函数,除此之外我不知道 => 运算符或以下代码块的含义,我假设它以某种方式重载(这是将一个未命名的函数分配给branch.Behavior吗?)

branch.Behaviour = b =>
{
LeavesBehaviour(b);
BranchingBehaviour(branchingPercent, b, depth + 1);

// weight behaviour
if (applyWeightOnBranches)
b.Direction = new Vector3D(initialDirection.X, initialDirection.Y * LineairScaleTo((double)b.Life / (double)branch.MaxLife, -1f, 1f), initialDirection.Z);// +(2 * (((double)b.Life / (double)maxLife)) - 1);
};

我的最终目标是让它在 java 中正常工作,其余代码全部移植,没有任何实际问题。

最佳答案

代码可以重写如下:

void MyMethod(Particle3D b)
{
LeavesBehaviour(b);
BranchingBehaviour(branchingPercent, b, depth + 1);

// weight behaviour
if (applyWeightOnBranches)
b.Direction = new Vector3D(initialDirection.X, initialDirection.Y * LineairScaleTo((double)b.Life / (double)branch.MaxLife, -1f, 1f), initialDirection.Z);// +(2 * (((double)b.Life / (double)maxLife)) - 1);
};

然后..

branch.Behaviour = MyMethod;

请注意,您的当前代码定义了一个匿名方法,但是,希望这应该能够阐明语法所代表的内容

关于java - C# 中关于 => 的不熟悉且奇怪的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com