Какие именно правила должна соблюдать функция, прежде чем мы сможем назвать ее «идемпотентной»?

В сообщении из другого потока говорится, что функция называется идемпотентной , если ее можно вызвать несколько раз без изменения результата.

Однако используемые термины (например, отсутствие побочных эффектов и возврат одинаковых результатов) относительно неоднозначны. Рассмотрим этот фрагмент кода:

public class test {

    int x = 0;
    java.util.Random r = new java.util.Random();

    public int F() {
        return x + 1;
    }

    public void F2() {
        x = r.nextInt();
    }
}

Можно ли сказать, что F ( ) идемпотентен, потому что последовательные вызовы F () возвращают одно и то же значение?

Или это не идемпотент, поскольку последовательные вызовы F () ] не возвращает то же значение, если F2 () вызывается между?

PS: « идемпотент », как определено в информатике, а не в математике.

9
задан Community 23 May 2017 в 12:32
поделиться