Muh*_*han 5 language-agnostic programming-languages language-design
昨晚我觉得编程语言可以有一个功能,我们应该能够限制分配给原始数据类型的值.
例如,我应该可以说我的int类型的变量只能有0到100之间的值
int<0, 100> progress;
Run Code Online (Sandbox Code Playgroud)
这将在所有场景中充当普通整数,除非您无法指定超出约束中定义的范围的值.编译器不会编译代码progress=200
.该约束可以与类型信息一起承载.
这可能吗?它是用任何编程语言完成的吗?如果是,则使用哪种语言,这种技术称为什么?
这通常是不可能的.没有任何算术运算符使用整数是没有意义的.使用算术运算符,您可以:
int<0,100> x, u, v;
...
x = u + v; // is it in range?
Run Code Online (Sandbox Code Playgroud)
如果您愿意在运行时进行检查,那么是的,几种主流语言都支持它,从Pascal开始.