Говорят, что хороший программист может писать Fortran на любом языке. =)» Мы не часто замечаем простые и очевидные вещи, потому что привыкли к многолетнему опыту написания кода на другом языке. Еще одна небольшая зарисовка на тему того, как писать Perl.

Дано: программа и командный интерфейс: создать, удалить, отредактировать. Пользователь пишет команду — программа делает то, что надо.

 

    my $action = shift;

if ( $action eq 'create_node' ) {
# do some...
}
elsif ( $action eq 'edit_node' ) {
# do some more
}
elsif ( $action eq 'delete_node' ) {
# delete some
}

 

Довольно стандартная ситуация и стандартное решение.

А интрига в том, что на Perl можно написать совсем по-другому:

 

    my $action = shift;

my $do = {
create_node => \&create_node,
edit_node => \&edit_node,
delete_node => \&delete_node,
};
$do->{$action}->();

 

Вот такое простое решение, которое на 100% Perl-style =)». Ссылки на функции + хеш. В итоге получаем элегантное и расширяемое решение. Ну а у кого фантазия позволяет, может развить мысль дальше ;-)»

shootnix
shootnix
02 февраля 2010, 02:42
 15  
просмотров
342
-4
 
dsimonov
02 февраля 2010, 04:54
2
doit('create_node');

sub doit { no strict 'refs'; shift()->(); };

sub create_node { print "create$/"; };
sub edit_node { print "edit$/"; };
sub delete_node { print "delete$/" };
shootnix
02 февраля 2010, 09:52
0
Ха-ха, отлично! =)»
dr_tarr
02 февраля 2010, 10:01
0
Прикольно.
А как это отлаживать?
shootnix
02 февраля 2010, 14:21
0
Очень просто.
perl -d ;-)
falcon
02 февраля 2010, 22:58
0
вау...
я поражён элегантностью
он такой один, этот пёрл?
shootnix
02 февраля 2010, 23:06
0
Нас двое, вообще-то ;-)»
one_more_kost
02 февраля 2010, 23:15
0
Ты себя за язык программирования принимаешь?
shootnix
02 февраля 2010, 23:19
0
Я себя не принимаю =)))»
one_more_kost
02 февраля 2010, 23:14
0
бАнальное Substitute Algorithm.
Надо же что то читать кроме PHP за 24 часа.
Вариант dsimonov более перланут.(насколько я понимаю этот их пёрл(а я его вообще не понимаю(но выглядит действительно перлистее)))
Насчёт "элегантности", то да, пёрл единственный такой.
shootnix
02 февраля 2010, 23:23
0
Если «перлистее» === «запутаннее и непонятнее», то да, наверное.
Вообще, вариант dsimonov не предполагает передачу в функцию параметров. Хотя, конечно, можно передавать вслед за функцией ее параметры, но это уже будет не айс как с точки зрения практики, так и просто эстетики. =) Ну это дело вкуса, конечно.
> Надо же что то читать кроме PHP за 24 часа.
Бля, меня спалили, срочно читаю «PHP за 48 часов», наверняка она в два раза умнее моей прежней =)))»
one_more_kost
02 февраля 2010, 23:25
0
Предлагаю серию за "21 день".
shootnix
02 февраля 2010, 23:28
0
Эту уже читал. =)»
one_more_kost
02 февраля 2010, 23:33
0
Хватит срать в каментах.
shootnix
02 февраля 2010, 23:34
0
Who care? ;-)»
shootnix
02 февраля 2010, 23:33
0
Насчет Substitute Algorithm не совсем понятно, можно пояснить? Таки мне стало интересно ;-)»
Чтобы оставлять комментарии, Вы должны быть авторизованы. Если у Вас нет логина, то пройдите регистрацию.
участники
shootnix
Rex
edmond-mouse
mikusya
Legend_FoX
PeterWilson
askhattk
barmaglot
wwax
tima888
t-sh
Sigurt
zloyrusskiy
goodev
10275
PILIGRIM
войти
зарегистрироваться
сообщества
последние записи
записи по обсуждениям
записи по рейтингу
создать новое сообщество
личные блоги
последние записи
записи по обсуждениям
люди
самые активные
новые
по городам
по интересам
блог проекта
правила участия
помощь
мы на других сайтах
реклама
конкурсы
контакты
WebEverywhere, 2008-2010

Lyakhov.KZ - Большая энциклопедия Казнета Lyakhov.KZ - Большая энциклопедия Казнета