Таким образом, "идемпотенция" может быть определена как:
Действие, которое, если выполнено N раз, имеет тот же эффект, что и выполнение действия только один раз.
Получил это, достаточно легко.
Мой вопрос о тонкости этого определения - это действие, рассматриваемое как идемпотент само по себе, или вы должны также рассмотреть данные, передаваемые в действие?
Позвольте мне пояснить на примере:
Предположим, что у меня есть метод PUT, который обновляет некоторый ресурс, мы будем называть его f(x)
Очевидно, что f(3)
является идемпотентным, если я поставлю 3 в качестве входа. И одинаково очевидно, что f(5)
изменит значение ресурса (т.е. Оно больше не будет 3 или какое-либо значение ранее)
Итак, когда мы говорим об идемпотентности, мы имеем в виду обобщение действия/функции, подобного (т.е. f(x)
), или мы имеем в виду действие/функцию + данные, передаваемые в нее (т.е. f(3)
)?