我假设纯函数必须始终具有返回类型(即,不得为void
)并且无论对象的状态如何都必须具有相同的输出,并且不纯函数会更改对象的状态或打印对象的状态。
但我使用的教科书指出:
访问器通常包含一个 return 语句,但打印有关对象状态的信息的方法也可以归类为访问器。
我糊涂了。哪一个是正确的?
编辑
有点澄清,让我问的是这个问题:
最后一个问题是“给出使用的函数类型”,在那里评论的人说这是一个不纯的函数,因为它正在打印。
那么这个函数是纯的还是不纯的?
我假设纯函数必须始终具有返回类型(即,不得为void
)并且无论对象的状态如何都必须具有相同的输出,并且不纯函数会更改对象的状态或打印对象的状态。
但我使用的教科书指出:
访问器通常包含一个 return 语句,但打印有关对象状态的信息的方法也可以归类为访问器。
我糊涂了。哪一个是正确的?
编辑
有点澄清,让我问的是这个问题:
最后一个问题是“给出使用的函数类型”,在那里评论的人说这是一个不纯的函数,因为它正在打印。
那么这个函数是纯的还是不纯的?
来自维基百科-如果关于函数的这些陈述都成立,则函数可以被描述为纯函数:
因此,如果与您的代码相比,任何一个语句都是错误的,那么它就是不纯的。
亩。 您似乎假设访问器根据定义是纯函数。这不是必需的情况-一个访问器(即使是get
-accessor返回值)可以是不纯的,如get
的方法LinkedHashMap
在访问阶模式(其在移动迭代顺序请求的条目到最后的位置)时。
两种说法都是正确的。
当您创建称为ACCESSOR METHODS 的获取价值的方法时
前任:
public String getName(){
return this.name;
}
对于设置值,我们使用带有VOID 的方法,称为MUTATOR METHODS
前任:
public void setName(String n){
this.name=n;
}
不纯函数或 Mutator 方法更改对象的状态并修改存储在实例变量中的值。
内容来自此链接
纯函数的特点:
纯函数的返回值仅取决于其参数 因此,如果您使用相同的参数集调用纯函数,您将始终获得相同的返回值。
它们没有任何副作用,如网络或数据库调用
不纯函数的特征
不纯函数的返回值不仅仅取决于它的参数 因此,如果您使用相同的参数集调用不纯函数,您可能会得到不同的返回值 例如,Math.random()、Date.now()
它们可能有任何副作用,例如网络或数据库调用
他们可以修改传递给他们的参数