JSP 副作用,这是什么

esyap4oy  于 2023-01-10  发布在  其他
关注(0)|答案(5)|浏览(167)

有人能告诉我下面一行中“副作用”的意思吗?
如果你调用一个EL函数,它不返回任何东西,那么你调用它只是为了它的副作用。

wswtfjt7

wswtfjt71#

副作用是指方法除了计算和返回值之外所做的任何事情。示例或类字段值的任何更改都是副作用,就像在屏幕上绘制内容、写入文件或网络连接一样。
严格地说,“函数”被定义为没有副作用--这就是为什么Java使用“方法”这个词来代替。没有返回值的真实的函数是毫无意义的。
显然,一个没有返回值的方法必须有某种副作用来证明它的存在,集合方法就是一个例子--副作用就是改变对象的内部状态。

rfbsl7qr

rfbsl7qr2#

这意味着你不是在调用一个数学意义上的“真”函数。这样的函数总是返回一个值,这个值完全由它的输入参数决定。没有“状态”需要修改,也不会发生其他事情。这就是为什么从并行化的Angular 来看函数式编程是有趣的;这使得更容易证明例如两个函数调用是独立的并且可以并行运行。
有关详细信息,请参阅pure functions上的Wikipedia条目。

mznpcxlj

mznpcxlj3#

一个副作用是当一个方法调用改变了一个类的状态。

public class SideEffectClass{

    private int state = 0;

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

这里,doSomething(int arg0)的副作用是更改状态变量。
当你想到一个程序时,你可以把它想成指令+状态+输入。因此,如果一个程序的域是所有可能的输入 * 状态的范围,并且该程序具有副作用,你可以看到,随着副作用数量的增加,应用程序的可能结果的上域可以爆炸性地增长。这使得程序的可能状态变得很大。这导致了复杂的测试。函数式编程范例被设计来消除副作用。通过使函数成为头等公民,并使所有声明都不可变,函数式编程防止了副作用,这使得函数式编程在并行处理中大放异彩,因为同步问题减少了。

aamkag61

aamkag614#

当你使用一种药物时,它的副作用通常是那些不想要的不良作用,使用它的主要目的是得到它的“所需”效果,这里我们从功能的Angular 来看,一般来说,当你调用它们时,你会得到一个计算值并使用。还有其他的函数,它们在计算“要求的”值时也会改变一些值,所以这里的“改变一些值”是副作用。在你句子的描述中,如果一个函数没有返回任何东西,它只用于它的副作用所以在这里,副作用是“改变一些值”。

9rnv2umw

9rnv2umw5#

让我们稍微处理一下上面给出的代码,以便在比较中更清楚。

public class SideEffectClass{

    private int state = 0;

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

相关问题