我有每个 queue[i]
的 drone[i]
。
我的问题: 如何制作一个等待每个 drone[i].actual_position == drone[i].desired_position
的代码,而不是我当前的代码,它只等待当前无人机 drone[i]desired_position == drone[i].actual_position
所以而不是这个:
for (int i = 0; i < drones.Length; i++)
{
queue[i].Enqueue(drone[i].desired_position);
if (drone[i]desired_position == drone[i].actual_position)
{
queue[i].Dequeue();
queue[i].Enqueue(next_desired_position);
}
}
我想要这样的东西:
for (int i = 0; i < drones.Length; i++)
{
queue[i].Enqueue(drone[i].desired_position);
//TODO: what should I put into "if"?
if (/* all drone[i]desired_position == drone[i].actual_position */)
{
queue[i].Dequeue();
queue[i].Enqueue(next_desired_position)
}
}
TLDR:我想确保每架无人机在出队之前都处于他想要的位置并转到下一个位置,以便无人机同步。
最佳答案
您似乎正在寻找 All
Linq 命令以及 for
循环和 if
交换:
// If all drones are at their expected positions
if (drone.All(d => d.desired_position == d.actual_position))
// then set new goals for each drone:
for (int i = 0; i < drone.Length; ++i) {
// remove the target achieved
queue[i].Dequeue();
// but add a new location to go
queue[i].Enqueue(next_desired_position)
}
关于C# - 如果所有比较都为真,则返回真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42245957/