Подтвердить что ты не робот

Побочный эффект - что это?

Может ли кто-нибудь сказать мне значение "побочного эффекта" в следующей строке?

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

4b9b3361

Ответ 1

Побочный эффект - это любой метод, помимо вычисления и возврата значения. Любое изменение значений полей экземпляра или класса является побочным эффектом, поскольку это что-то на экране, запись в файл или сетевое подключение.

Строго говоря, "функция" определяется как не имеющая побочных эффектов, поэтому Java использует слово "метод". Реальная функция без возвращаемого значения будет бессмысленной.

Очевидно, что метод, не имеющий возвращаемого значения, должен иметь какой-то побочный эффект, который оправдывает его существование. Например, методы набора - побочный эффект - изменение внутреннего состояния объекта.

Ответ 2

Это означает, что вы не называете "истинную" функцию в математическом смысле. Такая функция всегда возвращает значение, которое полностью определяется его входными параметрами. Нет никакого "состояния" для изменения, и больше ничего не может произойти. Вот почему функциональное программирование интересно с точки зрения распараллеливания; это упрощает доказательство того, что, например, два вызова функций независимы и могут выполняться параллельно.

Подробнее см. запись в Wikipedia о чистых функциях.

Ответ 3

Побочный эффект - это когда вызов метода изменяет состояние класса. Так

public class SideEffectClass{

    private int state = 0;


    public doSomething(int arg0){
        state += arg0;
    }
}

Здесь doSomething (int arg0) имеет побочный эффект изменения переменной состояния.

Когда вы думаете о программе, вы можете думать об этом как инструкции + состояние + ввод. Таким образом, если область программы является диапазоном всех возможных состояний ввода *, и у программы есть побочные эффекты, вы можете видеть, что кодомен возможных результатов для приложения может расти взрывным образом, так как увеличивается количество побочных эффектов. Это делает возможные состояния для программы большими, что приводит к сложному тестированию. Парадигма функционального программирования предназначена для устранения побочных эффектов. Создавая функции граждан первого класса и делая все декларации неизменяемым функциональным программированием, предотвращает побочные эффекты, которые заставляют функциональное программирование сиять параллельно, поскольку проблемы синхронизации уменьшаются.

Ответ 4

Позвольте немного манипулировать данным кодом выше, чтобы сделать его понятным в сравнении.

public class SideEffectClass{

    private int state = 0;

    public doSomething(...){//Does not matter
        state ++;
    }
}

Ответ 5

Когда вы используете лекарство, побочными эффектами являются те, которые обычно являются нежелательными плохими эффектами. Основная цель его использования - получить "требуемый" эффект. Здесь, когда мы смотрим на угол функций, обычно, когда вы их вызываете, вы получаете расчетное значение и используете. Существуют и другие функции, которые также изменяют некоторые значения при вычислении "требуемого" значения, поэтому здесь "изменение некоторых значений" является побочным эффектом. В описании вашего предложения, если функция ничего не возвращает, она используется только для его побочных эффектов, поэтому здесь побочные эффекты "меняют некоторые значения".