无效函数不返回
void function not returning
我遇到一个问题 return 无效函数。
我可以看到找到名称(输入)时打印的输出,return是正确的。如果 lambda(或 name_checker)函数 return 为真,void 函数应该 return,但它仍然实现函数的其余部分。
将您的功能更改为 return 和 bool
,使用该 return 值在您发现某些内容时立即退出。像这样
bool findTreeNodeRecursively(unsigned indent, const TreeNode* node, const std::function<bool(const TreeNode*)>& name_checker){
for (unsigned i = 0; i < indent; i++)
{
std::cout << " ";
}
if (!node)
{
std::cout << "!nullptr!" << std::endl;
return false;
}
indent++;
if(name_checker(node) == true){
return true;
}
if (auto control = dynamic_cast<const ControlNode*>(node))
{
for (const auto& child : control->children())
{
if (findTreeNodeRecursively(indent, child, name_checker))
return true;
}
}
else if (auto decorator = dynamic_cast<const DecoratorNode*>(node))
{
if (findTreeNodeRecursively(indent, decorator->child(), name_checker))
return true;
}
return false;
}
在一个递归函数中 return
只有 return 来自一次递归调用,它不会 return 一直回到顶部。如果那是你想要的,你必须对其进行编程。
我遇到一个问题 return 无效函数。
我可以看到找到名称(输入)时打印的输出,return是正确的。如果 lambda(或 name_checker)函数 return 为真,void 函数应该 return,但它仍然实现函数的其余部分。
将您的功能更改为 return 和 bool
,使用该 return 值在您发现某些内容时立即退出。像这样
bool findTreeNodeRecursively(unsigned indent, const TreeNode* node, const std::function<bool(const TreeNode*)>& name_checker){
for (unsigned i = 0; i < indent; i++)
{
std::cout << " ";
}
if (!node)
{
std::cout << "!nullptr!" << std::endl;
return false;
}
indent++;
if(name_checker(node) == true){
return true;
}
if (auto control = dynamic_cast<const ControlNode*>(node))
{
for (const auto& child : control->children())
{
if (findTreeNodeRecursively(indent, child, name_checker))
return true;
}
}
else if (auto decorator = dynamic_cast<const DecoratorNode*>(node))
{
if (findTreeNodeRecursively(indent, decorator->child(), name_checker))
return true;
}
return false;
}
在一个递归函数中 return
只有 return 来自一次递归调用,它不会 return 一直回到顶部。如果那是你想要的,你必须对其进行编程。