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


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)
 
 

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

 Тема:    Автор:    Дата:  
 несколько дурацких вопросов.   Alan Long   28 Feb 2003 02:52:38 
 Re: несколько дурацких вопросов.   Sergey Leschenko   28 Feb 2003 14:27:33 
 несколько дурацких вопросов.   Renat Araslanow   28 Feb 2003 13:54:09 
Архивное /ru.perl/4581e5e9c4a0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional