Обозначение для функции, которая ОБА манипулирует объектами И возвращает значение, в отличие от функций, которые либо первый, либо второй? - PullRequest
0 голосов
/ 06 мая 2018

Давным-давно я узнал, что для этого есть обозначение, но теперь я забыл его. Если название вводит в заблуждение, пожалуйста, дайте мне знать.

Например, IEnumerator в C # имеет функцию MoveNext (), которая перемещает перечислитель к следующему элементу его коллекции, вы можете использовать его для перехода к следующему элементу и / или для проверки, есть ли следующий элемент, так как он возвращает bool.

MoveNext () не ограничивается одним вариантом использования, например пустотами, которые просто что-то делают внутри своих тел, или функциями, которые просто возвращают значение.

Другие методы, которые используют этот тип неограниченного использования:

  • HashSet's Add, который возвращает bool, если элемент уже существует, но может быть использован только для попытки добавления элемента.
  • Stack's Pop, который возвращает последний объект, а также перемещает структуру.
  • очередь очереди, то же самое для стека, но с возвратом первого объекта.
  • и т.д.

Небольшой пример многократного использования таких методов:

public class Example
{
    Queue<int> testQueue;

    public Example()
    {
        testQueue = new Queue<int>();
        testQueue.Enqueue(1);
        testQueue.Enqueue(2);
        testQueue.Enqueue(3));
        testQueue.Enqueue(4);

        /// As function:
        int v = testQueue.Dequeue(); // I get 1.

        /// As method, just to take the elements out.
        testQueue.Dequeue();
        testQueue.Dequeue();
        // The first element is 4.
    }
}

Спасибо за помощь и еще раз извините, если название несколько двусмысленное.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если функция манипулирует какой-либо структурой данных или объектом, это функция с побочным эффектом . Функция с побочными эффектами не гарантирует, что возвращаемое значение всегда будет одинаковым для идентичного состояния и для идентичных параметров, если есть какие-либо параметры.

Функция без побочных эффектов - это чистая функция . Чистая функция в заданном состоянии и заданном параметре всегда будет возвращать одно и то же значение.

Чтобы ответить на ваш вопрос в полном объеме:

  • A не пустая функция, которая что-то меняет - это функция с побочными эффектами .
  • не пустая функция, которая только возвращает что-то - это чистая функция .

Это оставляет нам функцию, которая «что-то делает, но ничего не возвращает». Согласно приведенным выше определениям, такая функция также будет функцией с побочными эффектами, даже если она не возвращает никакого значения.

0 голосов
/ 14 мая 2018

Если функция делает что-то еще, кроме возврата значения, то это функция с побочным эффектом . Функция без побочных эффектов - чистая функция .

...