某些语言有只能被赋值一次的变量, 这种设计有什么特别的好处吗?


像haskell, nim的let之类的, 除了能体现一些奇怪的思想, 有什么特别的优越性吗?

编程语言

人形自走推妹机 9 years, 9 months ago

你说的应该是immutable variables吧,nim不熟悉,但scala也是有这样的定义的,比如Java里用final声明的类型也应该属于这个范畴,这样说是不是就看起来不那么奇特了? 最大的一个好处就是可以直接放在常量区,比如Java中String的intern()之后做map的key,效率是要更高些的。 也有助于检查出一些编译错误。
此外也有如Erlang这样的变量绑定的处理,只允许绑定一次:如:


 Eshell V6.1  (abort with ^G)
1> A = 10.
10
2> A.
10
3> A = 12.
** exception error: no match of right hand side value 12

主要见于一些FP语言,在FP里,函数一旦变成一等公民之后,会有不一样的设计....

Justice answered 9 years, 9 months ago

Your Answer