谁能解释一下状态和可变数据是什么?

Kev*_*vin 6 javascript java functional-programming immutability

在计算机科学中,函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免状态和可变数据.

http://en.wikipedia.org/wiki/Functional_programming

谁能解释一下状态和可变数据是什么?任何人都可以给我JAVA或JavaScript的例子.

das*_*ght 6

State统称为存储在对象中的数据,用于确定对象的当前属性.例如,如果您有一个BankAccount对象,则该帐户的所有者及其中的金额代表该帐户的状态.

然而,并非所有状态都不利于函数式编程,只有可变的+一个是不可接受的.例如,组成字符串的字符是字符串的状态.如果您无法更改字符串的内容,则称其具有不可变状态.这非常适合函数式编程范例.


+ mutable是"多变的"这个奇特的词.


Nic*_*Hol 6

mutable建议任何可以改变的东西,即int

int a = 0;
System.out.prtinln(a); //prints 0
a = 2;
System.out.prtinln(a); //now prints 2, so its mutable
Run Code Online (Sandbox Code Playgroud)

在java中,字符串是不可变的.你不能只改变它的引用的字符串值.

String s1 = "Hello";
System.out.println(s1); //prints Hello
String s2 = s1;
s1 = "Hi";
System.out.println(s2); //prints "Hello" and not "Hi"
Run Code Online (Sandbox Code Playgroud)

状态是类的实例将具有的东西(对象).

如果一个Object的属性具有某些值,则它处于不同的状态,然后是具有不同属性值的同一个类的另一个Object