максимальное и минимальное ограничение на переменную - PullRequest
2 голосов
/ 28 марта 2011

Я пишу много методов, которые выглядят примерно так:

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

Есть ли более элегантный способ сделать это? Очевидно, что вы могли бы легко написать метод, но мне было интересно, есть ли в каких-нибудь языках более естественный способ установить ограничение или есть что-то еще, что я пропускаю.

Языковая независимость, потому что мне интересно, как разные языки могут с этим справиться.

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

В большинстве языков программирования вы можете использовать что-то вроде

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

или просто напишите макрос clip(), который делает то же самое.

0 голосов
/ 28 марта 2011

Время от времени я использовал интервальный тип данных.Большая часть усилий заключается в инициализации различных случаев, так как вы можете захотеть обрабатывать либо конец, либо открытый, либо закрытый.Тестирование на включение легко для любого конкретного случая.

Здесь нет ничего потрясающего, но на удивление удобно.Легко сделать в объектно-ориентированном, функциональном и процедурном стилях.

...