Очень часто в разных задачах встречается один и тот же однотипный шаблон: в зависимости от того, в какой из нескольких, известных заранее, интервалов попало значение, следует предпринять разное действие. Обычно, таким действием является вычисление некоего числа или в общем случае, некой величины (необязательно числовой). Когда интервалов достаточно много, то начинается уже рутина с операторами if или switch, а это повышает вероятность ошибок, да и код смотрится, мягко говоря, не очень…
В таких случаях, нам бы хотелось иметь в D нечто вроде функции cond из LISP-family языков или мощный генератор сопоставлений а-ля match из некоторых современных языков. Но в D этого нет и не планируется к добавлению, а это значит, что проблемой необходимо заниматься программисту.
К счастью, мы кое-что уже придумали…
Читать далее