除C ++之外的哪些编程语言支持常量类方法的概念?也就是说,哪些语言允许程序员以这样的方式约束方法,即保证不改变应用该方法的对象的状态?
请在答案中提供示例或参考。
答案 0 :(得分:4)
Haskell,因为它是purely functional。
实际上,每个值/方法在Haskell中都是常量,即使可变状态/ IO可以通过名为monad的数学结构建模。
答案 1 :(得分:3)
默认情况下,所有纯函数式语言都是const
,因为纯函数式语言没有要更改的状态。
答案 2 :(得分:3)
我相信Fortran(我认为95或更高)有你想要的东西。巧合的是,它被称为“纯子程序”。
http://www.soks.org/view/Fortran95ForFortran77Programmers#pure_routines
答案 3 :(得分:2)
根据this Wikipedia entry,许多其他面向对象的语言(如Java和C#或Microsoft的C ++ / CLI)中都没有此功能。
纯函数式语言,如Haskell,Curry,http://en.wikipedia.org/wiki/Ωmega_interpreter">Ωmega执行支持 *授权*此功能
答案 4 :(得分:2)
答案 5 :(得分:2)
由于您将其标记为C ++,我认为您的意思是const
这样的方法:
class A {
int e;
public:
int doSomething() const {
// ++ e; // Compiler error, change data-member in read-only structure
return e+1; // OK.
}
};
(尽管由于mutable
成员,C ++的const不是真正的const。)
然后我只知道C ++,D2以及支持这一点的所有功能语言。
const
methods但你可以让所有成员readonly
。您还可以创建一个readonly
包装类/子类。 Java没有const关键字,但是像C#you can make all members final
。答案 6 :(得分:0)
也许您可以在.Net中编写自定义属性。您传入的对象可能都必须从同一个类继承,即EntityBase,因此您可以手动确保状态是相同的。