parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Maxx 17.10.2007 22:28 / 17.10.2007 22:29

думаю только для того, чтобы не считать (($num % 100) \ 10) == 1 для чисел меньше 10 (что бессмысленно), а сразу переходить в else-блок

типа оптимизация :)

если при использовании ф-ции обычно фигурируют числа 1-го десятка - это возможно имеет смысл, можно померить. Для равномерного ряда от 0 до 10000 - никакой разницы.

кстати, вместо
^case(5;6;7;8;9;0){$result[$genitive_plural]}
я бы написал
^case[DEFAULT]{$result[$genitive_plural]}

но это на вкус, скажется ли это как то на производительности - не знаю.

у меня подобная ф-ция выглядит так:
@intRuCases[num;case1;case234;caseDefault]
# если последние две цифры 10..19
^if((($num % 100) \ 10)== 1){
        $result[$caseDefault]
}{
        ^switch($num % 10){
                ^case(1){$result[$case1]}
                ^case(2;3;4){$result[$case234]}
                ^case[DEFAULT]{$result[$caseDefault]}
        }
}
имхо, case1,case234 - легче запомнить (сущ при числе 1 - яблоко, сущ. при числах 2,3,4 - яблока, во всех остальных случаях - яблок) чем вспоминать каждый раз, что такое genitive_plural :)