是否有任何编程语言支持定义对原始数据类型的约束?

Muh*_*han 5 language-agnostic programming-languages language-design

昨晚我觉得编程语言可以有一个功能,我们应该能够限制分配给原始数据类型的值.

例如,我应该可以说我的int类型的变量只能有0到100之间的值

int<0, 100> progress;
Run Code Online (Sandbox Code Playgroud)

这将在所有场景中充当普通整数,除非您无法指定超出约束中定义的范围的值.编译器不会编译代码progress=200.该约束可以与类型信息一起承载.

这可能吗?它是用任何编程语言完成的吗?如果是,则使用哪种语言,这种技术称为什么?

n. *_* m. 5

这通常是不可能的.没有任何算术运算符使用整数是没有意义的.使用算术运算符,您可以:

int<0,100> x, u, v;
...
x = u + v; // is it in range?
Run Code Online (Sandbox Code Playgroud)

如果您愿意在运行时进行检查,那么是的,几种主流语言都支持它,从Pascal开始.