簡體   English   中英

有界原語

[英]Bounded primitives

在Java或C ++中有沒有類似於有界原語的東西? 我想要的是一個變量,它像float或double一樣,除了它具有用戶可設置的最小值和最大值。

因此,例如,如果我要將這樣的浮點變量設置為0到100之間的綁定,我可以嘗試將其設置為任意數字,並且通常以與原始數據相同的方式使用它,除了當分配給它的值大於允許的最大值時,它將假設最大值,當它小於最小值時,它將假定最小值。 我希望能夠對其進行基本操作,如加法,乘法和減法 - 特別是使用我將在類似的常規變量上使用的運算符。

這些存在於某個庫的某個地方嗎?

那么你可以設計這樣一個類(用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 
  }
};

您可以將其轉換為模板以支持其他數據類型。

沒有這樣的Buildins。 此外,Java不允許運算符重載,因此您永遠無法編寫如下內容:

myBoundedInt i = 13;

反而:

myBoundedInt i = new myBoundedInt(13);
//...
i.setValue(42);

據我所知,Dlang確實為類提供了內置斷言,以保證在對象的整個生命周期內滿足某些條件。 也許你想看看這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM