2011-03-28 60 views
2

我寫了很多的方法看起來有點像這樣:最大和最小約束一個變量

/* myVal must be between 10 and 90 */ 
int myVal = foo; 
if(myVal < 10) { myVal = 10; } 
else if (myVal > 90) { myVal = 90; } 

是否有這樣做的更優雅的方式?顯然你可以很容易地編寫一個方法,但我想知道是否有任何語言有更自然的方式來設置約束,或者是否有其他東西丟失。

語言不可知,因爲我對不同的語言如何處理它感興趣。

回答

3

在大多數編程語言中,你可以使用類似

myVal = min(max(foo, 10), 90); 

或者乾脆寫一個clip()宏觀其做同樣的事情。

+0

這是一個更好的,謝謝。只要記住你想要最大的foo和最小值,以及最小的foo和最大值! – 2011-03-29 08:35:27

0

我已經使用了時間間隔的數據類型。大部分工作是在初始化不同的情況下,因爲你可能想要處理任何一端是打開還是關閉。對於任何特定情況,包含測試都很容易。

這裏沒有什麼讓人驚心動魄的,但出人意料的方便。容易做到面向對象,功能和程序風格。