首页 > 解决方案 > 通过创建循环来简化一些重复动作的代码

问题描述

下面是我对一系列整数类型端口执行数据重置的代码。

   //note function: void resetData(int pin);
   resetData(p00);
   resetData(p01);
   resetData(p02);
   resetData(p03);
   resetData(p04);
   resetData(p05);
   resetData(p06);
   resetData(p07);

   resetData(p10);
   resetData(p11);
   resetData(p12);
   resetData(p13);
   resetData(p14);
   resetData(p15);
   resetData(p16);
   resetData(p17);

   resetData(p50);
   resetData(p51);

resetData(p80);
resetData(p81);
resetData(p82);
resetData(p83);
resetData(p84);
resetData(p85);
resetData(p86);
resetData(p87);

resetData(p110);
resetData(p111);
resetData(p112);
resetData(p113);
resetData(p114);
resetData(p115);
resetData(p116);
resetData(p117);

在上述代码中,有不同类型的端口(组合在一起),它们由resetData. 有没有办法通过创建一些循环来简化这些长长的代码列表,而不改变 的定义resetData?谢谢!

标签: c++

解决方案


您可以创建一个适用于引脚组的函数:

void myResetData(const std::vector<int> &pins)
{
    for (auto pin : pins)
    {
        resetData(pin);
    }
}

然后,使用它:

void f()
{
    std::vector<int> group1{ p00, p01, p02, p03, p04, p05, p06, p07 },
                     group2{ p10, p11, p12, p13, p14, p15, p16, p17 };
    myResetData(group1);
    myResetData(group2);
}

要不就:

void f()
{
    myResetData(std::vector<int>{ p00, p01, p02, p03, p04, p05, p06, p07 });
    myResetData(std::vector<int>{ p10, p11, p12, p13, p14, p15, p16, p17 });
}

你甚至可以逃脱:

void f()
{
    myResetData({ p00, p01, p02, p03, p04, p05, p06, p07 });
    myResetData({ p10, p11, p12, p13, p14, p15, p16, p17 });
}

推荐阅读