Если значение хотя бы одного параметра будет неизвестно на этапе компиляции, то функция будет запущена в runtime (а не будет выведена ошибка компиляции).
res_func test_hash(params...){
if(params1 == const_A){
return_1;
} else {
if(params2 == const_B){
return 2;
} else {
if(params3 == const_C){
return 3;
} else {
return 4;
}
}
}
Проверка результата:
res_func = test_hash(params...);
switch(res_func){
case 0: ...
break;
case 1: ...
break;
case 2: ...
break;
case 3: ...
break;
}
Т. Е. Это роутер? А что делает роутер с пакетом? Он что-то меняет? Так как реализации роутера нет, придётся писать, но нужно знать что писать!