я получил следующий код:
sub deg2rad ($;$) { my $d = _DR * $_[0]; $_[1] ? $d : rad2rad($d) }
Может кто-нибудь сказать мне, что $;$
средства?
я получил следующий код:
sub deg2rad ($;$) { my $d = _DR * $_[0]; $_[1] ? $d : rad2rad($d) }
Может кто-нибудь сказать мне, что $;$
средства?
Материал в скобках за подзадачей называется прототипом. Они объясняются в perlsub. В общем, вы, , можете использовать, чтобы иметь возможность проверки ограничений времени компиляции.
Конкретные ($;$)
используются для обязательных аргументов.
Точка с запятой (;) отделяет обязательные аргументы от необязательных аргументов. Это является излишним, прежде чем @ или%, что сожрать все остальное
Так вот, к югу должен быть вызван с по крайней мере один аргументом, но может иметь второй один.
Если вы вызываете это с тремя аргументами, это вызовет ошибку.
use constant _DR => 1;
sub rad2rad {@_}
sub deg2rad ($;$) { my $d = _DR * $_[0]; $_[1] ? $d : rad2rad($d) }
print deg2rad(2, 3, 4);
__END__
Too many arguments for main::deg2rad at scratch.pl line 409, near "4)"
Execution of scratch.pl aborted due to compilation errors.
Обратите внимание, что прототипы не работают вызовы методов, как $foo->frobnicate()
.
В общем, прототипы считаются плохой практикой в современном Perl и должны использоваться только тогда, когда вы точно знаете, что вы делаете.
Короткий и к точке пути The Sidhekin используется in their comment below суммирует это красиво:
Самая важная причина, они считаются плохой практикой, является то, что люди, которые не знают, что именно они делают , пытаются использовать их для чего-то, чего нет.
См. this question и его ответы для подробных объяснений и обсуждения по этой теме.
Часть причины, по которой они считаются плохой практикой, - это слово «прототип». На других языках программирования это означает что-то еще. – Sobrique
Это полезно. большое спасибо! –
Самая важная причина, по которой они считаются плохой практикой, заключается в том, что люди, которые не знают точно, что они делают, пытаются использовать их для чего-то, чего нет. (Они - электроинструменты, читайте руководство и не используйте их, если не имеете в виду его.) –