|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alan Long 2:5030/1082.72 28 Feb 2003 02:52:38 To : All Subject : несколько дурацких вопросов. -------------------------------------------------------------------------------- Hello All! Тут вот поднакопилось несколько дурацких вопросов, которые хотелось-бы задать почтенной публике и узнать, может-быть я заблуждаюсь. Первый: прототипы для функций когда используется объектный интерфейс. --------------------------------------------------------------------- То есть есть пример: use Foo; $foo = Foo->new( name => 'value' ); $foo->bar( $arg ); Описание Foo.pm: package Foo; sub new { my $class = shift; my %arg = @_; # .... } sub bar { my $self = shift; my $arg = shift; } Хотелось-бы узнать как правильно описать прототипы функций new и bar из модуля Foo. Второй, про значения: -------------------- достаточно удобная конструкция: $var ||= 'value'; Hо хотелось-бы что-бы значение переменной $var присвоивалось только в том случае если $var == undef, а в случае $var == '' или $var == 0 оставалось прежним, то есть сейчас приходится писать: $var = 'value' unless( defined $var ); Что несколько громоздко и по скорости - не совсем ясно, иногда получается медленне, особенно, если $var достаточно сложная переменная. Можно конечно родить что-то типа: sub _default(\$$) { $$_[0] = $_[1] unless defined $$_[0]; } и использовать: _default $var => 'value'; И примерно такая-же ситуация с аргументами: sub foo { my $arg = shift || 'default value'; # ... } Тут так-же приходися изображать как: sub _value($$) { defined $_[0] ? $_[0] : $_[1]; } sub foo { my $arg = _value shift => 'default value'; # ... } Так-же не добавляет скорости выполнения. Может быть общественность присоветует какой-нибудь другой путь решения столь простых выражений. P.S. Все куски кода прведенные в данном письме не тестировались в работе и возможно содержат ошибки. -- With best, Ъ-· Ъ Е-ЧLaі\і <alan@x-rays.eu.org> --- timEd/386 1.10+ * Origin: X - Rays Station (2:5030/1082.72) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/4581e5e9c4a0.html, оценка из 5, голосов 10
|