有没有一些编程语言中的“变量”默认为不可变(const、final等)?
而且,如果要让它是可变的,你需要声明一个额外的不可变限定符吗?
有没有一些编程语言中的“变量”默认为不可变(const、final等)?
而且,如果要让它是可变的,你需要声明一个额外的不可变限定符吗?
函数式编程 范式的哲学倾向于所有“变量”都是不可变的,并且只有在极端情况下(即用于I/O)才允许“可变”变量。 因此,大多数函数式编程语言(如各种Lisp方言和Haskell)通常会强化不可变变量。 当然,一些语言比其他语言提供更多的灵活性,但中心范式/哲学仍然是不鼓励它。
编辑:针对你的编辑回复:
如果你正在寻找一个带有友好常量的C语言,那么采用全新的编程范式并不是你的解决方案。在函数式编程中,一切都是不可变的(在大多数情况下),你通常会看到一个全新的基本哲学和编程方法。
如果你只是想要更容易地声明常量,那么这 并不是 真正的解决方案。
编辑2:针对给我点赞的人:
虽然我希望我已经正确地回答了提问者的问题,但考虑到他的新编辑/评论,我不确定这个答案是否会有用。然而,我可以希望可能向他展示一个全新美丽的编程世界 =)
编辑3:这是维基百科的列表功能性编程语言:
这些语言中大多数都有一些非函数式异端的小元素/影响;标记为“纯函数式”的则没有。
据我所知,函数式编程语言是唯一通过哲学鼓励使用不可变变量的语言。可能有一些语言默认情况下具有不可变变量,但它们并非基于函数式编程范式。这个概念对我来说听起来相当奇怪,但考虑到存在大量的编程语言,我不能保证绝对不会出现这种情况。我只能说,据我所知,这种情况极不可能发生。是的。
Haskell和Erlang就是两个例子。
let
绑定的变量始终是不可变的,但结构的字段(Caml中称为记录)默认情况下仅是不可变的,也可以将单个字段标记为mutable
。Clojure是一种Lisp方言,专门处理不可变数据,并针对Java虚拟机进行优化。
XSLT中的所有变量都必须是不可变的。