其实就是变量和常量的区别,之所以在这种函数式编程语言里,要求大家尽量使用val(常量),少使用var(变量),其中一个很重要的原因是多线程中并发访问中的读写一致性原因。对于变量来说,因为值可以被其它逻辑修改,就存在读写一致性问题,如果读写一致性会影响业务逻辑,就需要增加这种额外的代码来维持这种读写一致性。而对于常量来说,由于不能修改,所以就不存在读写一致性的问题。
在编程中,变量的这种可修改性其实是增加了代码逻辑的复杂性,比如一个变量A,如果在其作用域内,有很多逻辑都会读写这个变量,你就很难确定A的值。如果是存在并发访问的情况就更复杂了。所以为了使得代码逻辑简单,应该多使用常量而不是变量来进行编程。