代码之家  ›  专栏  ›  技术社区  ›  Heath Raftery

如果一个函数可以被再次调用来重新执行,而不是再次执行,你会调用它什么?

  •  0
  • Heath Raftery  · 技术社区  · 6 年前

    我在找一个术语来描述那些 纯净的 也不一定 可重入的

    void CounterExample(int value)
    {
      static int STORE[5];
      static int STORE_COUNT=0;
    
      STORE[STORE_COUNT++] = value;
    }
    

    而这个会:

    void Example(int value)
    {
      static int STORE[5];
      static int STORE_COUNT=0;
    
      STORE_COUNT = 0;
      STORE[STORE_COUNT++] = value;
    }
    

    我特别考虑硬件初始化功能。通常他们会以某种方式设置GPIO,经历通电顺序,然后以某种方式配置硬件。如果以后我需要重新初始化硬件,我可以再次调用这个函数。但是,如果函数还通过附加到已配置结构的数组来设置一些软件结构,那么如果不先撤消函数最初所做的操作,我就不能再次调用此函数。

    例如,一个comms驱动程序初始化函数可能会打开comms驱动程序的电源,发送一些config命令,然后调用另一个名为 AddCommsCallback() 它为通信设备接收到的数据注册一个默认回调。如果我曾经想重置comms驱动程序,我不能简单地再次调用这个函数,因为默认回调将附加到现有的过时回调。

    是否有与这两类功能相关的特定术语(除了通用的优点术语!)?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Lightness Races in Orbit    5 年前

    那是一个 幂等的

    请阅读以下富有想象力的标题: " What is an idempotent operation?

        2
  •  -2
  •   Oluwatobi Akinmade    6 年前

    递归函数(DEF)是一个要么调用自身,要么处于函数调用的潜在循环中的函数。根据定义,递归函数有两种类型。考虑一个调用自身的函数:我们称这种类型的递归为立即递归。

    资料来源: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjZ8tLFhOTdAhWBecAKHYL7BA4QFjABegQIBhAE&url=http%3A%2F%2Fpages.cs.wisc.edu%2F~calvin%2Fcs110%2FRECURSION.html&usg=AOvVaw09CvF8i5I7WunwACK0w1yx