Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     24 May 2003  09:33:34
 To : "Rostislav Chebykin"
 Subject : Re: Как же Switch?
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Rostislav Chebykin.
 
 AA>> Большое количество вариантов выбора скорее всего указывает на
 AA>> неудачный дизайн. Приведи, пожалуйста, пример задачи в которой
 AA>> это необходимо.
 
 RC> Изначальная задача заключалась в том, чтобы ставить слово после числа
 RC> в нужном падеже: "1 байт", "2 байта", "6 байтов", "3.14 байта" и т. д.
 
 RC> Hо впереди еще много задач из области обработки текстов на русском
 RC> языке. А там ситуации switch на каждом шагу.
 
 RC> Впрочем, в данном конкретном случае мне, кроме собственно решения
 RC> задачи, нужна еще Perl'овая элегантность. Мне не хочется применять
 RC> этот язык тупо и топорно. Так что хотелось бы как минимум найти
 RC> решение, в котором '$var == ' не повторяется четыре раза.
 
 В данном случае 
 
 our %forms = { 0 => 0, 1 => 1, 2 => 2, ... 9 => 3 }
 
 return $dual if $var != int($var);
 return $plural if $var%100 > 10 && $var%100 < 20;
 return $plural if $forms{$var%10} == 3;
 return $dual if $forms{$var%10} == 2;
 return $singular;
 
 Если сделать хэш поразвесистей (ввести в него формы для 1, 2, 3 и 4, но для
 каждого десятка), то можно еще строчку сократить. Где тут место для switch?
 
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Как же Switch?   Artem Chuprina   24 May 2003 09:33:34 
Архивное /ru.perl/11477b4c42d5e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional