我正在尝试将开源C#程序的一部分移植到java中,并且遇到了一段完全没有意义的代码,我无法在线找到任何语法解释,也没有工具提示或甚至MCVS中给出的运营商名称,用于更具体的搜索。
分支是#34;粒子3D"表示3d位置和旋转。 对于void函数(Particle3D),behavior是一个委托(我用java中的一个简单抽象类替换它)。 根据视觉工作室的说法,b是临时的Particle3D。这到底发生了什么?看起来这是将一个particle3D分配给一个委托,该委托表示一个以粒子3D作为参数的函数,过去我不知道=>运算符或下面的代码块意味着,我假设它以某种方式重载(这是为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中正常工作,其余代码全部移植而没有任何实际问题。
答案 0 :(得分:3)
代码可以重写如下:
var stateLayer = new google.maps.Data();
var countyLayer = new google.maps.Data();
stateLayer.loadGeoJson('state.json');
countyLayer.loadGeoJson('county.json');
stateLayer.setStyle({
fillColor: 'gray',
strokeColor: '#000',
strokeOpacity: 1,
strokeWeight: 1
});
countyLayer.setStyle({
fillColor: '#fff',
strokeColor: 'black',
strokeOpacity: 1,
strokeWeight: 1
});
stateLayer.setMap(map);
countyLayer.setMap(map);
然后..
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);
};
请注意,您的当前代码定义了一个匿名方法,但是,希望这可以解释语法代表的内容