我需要帮助来理解这个特定 if 语句的语法完成了什么
I need help understanding what the syntax of this particular if statement accomplishes
我正在尝试跟进并分解 pacman 克隆的源代码。我对 if 语句感到困惑。
void PacMan::queueDirection(Direction dir)
{
if (!directions.empty())
{
if (dir == -directions.front()) //this statement
{
std::queue<Direction> clear;
std::swap(directions, clear);
}
}
if(directions.size() < 2)
directions.push(dir);
}
我的问题是 -directions.front() 的 - 前面有什么作用? directions 是一个队列。它是否将 front() 返回的引用乘以 -1?
感谢您的帮助 - 整个项目所在的 github 下面的 post a link。
https://github.com/HexagonNico/Pac-Man/blob/master/PacMan.cpp 如果你喜欢的话。
您粘贴的代码似乎具有以下意图:
如果 queue 开头的 Direction 实例是作为此函数参数提供的值的负数,则清除 queue 并且提供的参数为 enqueued.
本例中的类型 Direction 是 header Directions.h
中定义的枚举
enum Direction
{
Up = 1,
Down = -1,
Left = 2,
Right = -2,
Unset = 0
};
否定 Direction 实例,在这种情况下,只是给我们它的截然相反。
例如,考虑值 Direction::Up 在函数被调用时位于 queue 的头部并且函数的参数是 Direction::Down。在这种情况下,queue 方向将被清除。我添加了一个 example 以使这一点更清楚。
我正在尝试跟进并分解 pacman 克隆的源代码。我对 if 语句感到困惑。
void PacMan::queueDirection(Direction dir)
{
if (!directions.empty())
{
if (dir == -directions.front()) //this statement
{
std::queue<Direction> clear;
std::swap(directions, clear);
}
}
if(directions.size() < 2)
directions.push(dir);
}
我的问题是 -directions.front() 的 - 前面有什么作用? directions 是一个队列。它是否将 front() 返回的引用乘以 -1? 感谢您的帮助 - 整个项目所在的 github 下面的 post a link。 https://github.com/HexagonNico/Pac-Man/blob/master/PacMan.cpp 如果你喜欢的话。
您粘贴的代码似乎具有以下意图:
如果 queue 开头的 Direction 实例是作为此函数参数提供的值的负数,则清除 queue 并且提供的参数为 enqueued.
本例中的类型 Direction 是 header Directions.h
中定义的枚举enum Direction
{
Up = 1,
Down = -1,
Left = 2,
Right = -2,
Unset = 0
};
否定 Direction 实例,在这种情况下,只是给我们它的截然相反。
例如,考虑值 Direction::Up 在函数被调用时位于 queue 的头部并且函数的参数是 Direction::Down。在这种情况下,queue 方向将被清除。我添加了一个 example 以使这一点更清楚。