Java或C ++中是否有类似于有界原语的东西?我想要的是一个变量,它像float或double一样,除了它具有用户可设置的最小值和最大值。
因此,例如,如果我要将这样的浮点变量设置为0到100之间的绑定,我可以尝试将其设置为任意数字,并且通常以与我相同的方式使用它原语,除了当分配给它的值大于允许的最大值时,它将假设最大值,当它小于最小值时,它将假设最小值。我希望能够对其进行基本操作,例如加法,乘法和减法 - 特别是使用我将在类似的正常变量上使用的运算符。
这些存在于某个某个库中吗?
答案 0 :(得分:3)
你可以为此设计这样一个类(用C ++编写)。基本设计如下: -
class Bound
{
private:
const int min = 10;
const int max = 100;
int var;
public:
Bound( int x )
{
if ( x > max )
var = max;
else if ( x < min )
var = min;
else
var = x;
}
Bound& operator == ( int x )
{
// On same line as constructor
}
};
您可以将其转换为模板以支持其他数据类型。
答案 1 :(得分:1)
没有这样的Buildins。此外,Java不允许运算符重载,因此您永远无法编写类似的内容:
myBoundedInt i = 13;
而是:
myBoundedInt i = new myBoundedInt(13);
//...
i.setValue(42);
据我所知,Dlang确实为类提供了内置断言,以保证在对象的整个生命周期内满足某些条件。也许你想看看这个。