Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> tie OOP 
:(
    Опции темы
gcc
Дата 26.2.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



можете подсказать зачем использовать в OOP tie?

в книге "рецепты для профессионалов 3 издание" про это не написано было, точнее для бд примеры... но не понятно где именно преимущество...

вот нашел это не плохое
http://search.cpan.org/~milan/OOP-1.01/lib/OOP.pm

мне понравился пример с хэш-хеши-функций

про tie я не нашел http://www.google.com/search?hl=uk&q=o...D0%BA&meta=



Это сообщение отредактировал(а) gcc - 26.2.2009, 22:09
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 3.3.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



можно подсказку? ключевые слова?
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 3.3.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



вообщем почти что нафиг не нужны.
tie - это расширения, что бы можно было решать более сложные задачи, не выходя за рамки обычно синтаксиса.




--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 3.3.2009, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



может быть оно еще быстро работает? обращается к переменным? в книге было написнао что хэши медленно работают чем массивы в ООП...

хочется увидеть маленькие примеры, в книге я не увидел.. (может не понял)

есть переменная $tie, что произойдет если ее "привязать"?
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 3.3.2009, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



gcc, просто прочитайте про tie в кэмел-буке.
быстрее точно не будет.
А по поводу того, что доступ к хэшу не самый быстрый.. ну вы сначала упритесь в это ограничение а потом оптимизируйте. сэкономите время


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 3.3.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Цитата(sir_nuf_nuf @ 3.3.2009,  02:47)
gcc, просто прочитайте про tie в кэмел-буке.

что это такое?

sir_nuf_nuf,  в книге "Рецепты для профессионалов" 2 и 3 издание, есть примеры рабоыт с базой данных в файле, и там не написано какой формат файла (не понятно зачем вообще это), то есть просто про БД файл... про применения в ООП ни где нету

в интернете я не нашел про это ничего...

Цитата(sir_nuf_nuf @ 3.3.2009,  02:47)
ну вы сначала упритесь в это ограничение а потом оптимизируйте. сэкономите время

спасибо, понял, знаю... мне скорость не нужна

Это сообщение отредактировал(а) gcc - 3.3.2009, 12:56
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 3.3.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Вообще странная мода учить Perl по примерам, хотя вы не первый кто ей следует.

Tie - это возможность расширить возможности стандартных конструкций языка (%@*$)
своим кодом (который обычно предствален в виде объектов, но это не имеет значения)

ООП - это идеология согласно которой любой интерфес представляет собой набор Классов.
Т.е. доступ ко всему происходит по средством создания объектов и вызова методов.

В ООП вообще ничего не говорится про внутрениие структуры языка, соответвенно и про tie.


Другой вопрос - это реализация ООП в Perl - собственно говоря она сводится к 3 вещам:
1) объект - это blessed reference
2) при объектном вызове (->) эта ссылка передается в процедуру первым аргументом
3) ну и наследование.

Сами объекты вы можете реализовывать как вам угодно. Но поскольку вам дана полная свобода выбора
как хранить данные и как к ним обращаться, то вы можете использовать что угодно, хоть например tie.



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 3.3.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



sir_nuf_nuf, спасибо...

а примеры можно с tie? я не вижу приемущества...
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 4.3.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



вот например есть

Код

    package NewHash;
    require Tie::Hash;

    @ISA = (Tie::Hash);

    sub DELETE { ... }        # Provides needed method
    sub CLEAR { ... }        # Overrides inherited method


    package NewStdHash;
    require Tie::Hash;

    @ISA = (Tie::StdHash);

    # All methods provided by default, define only those needing overrides
    # Accessors access the storage in %{$_[0]};
    # TIEHANDLE should return a reference to the actual storage
    sub DELETE { ... }

    package NewExtraHash;
    require Tie::Hash;

    @ISA = (Tie::ExtraHash);

    # All methods provided by default, define only those needing overrides
    # Accessors access the storage in %{$_[0][0]};
    # TIEHANDLE should return an array reference with the first element being
    # the reference to the actual storage 
    sub DELETE { 
      $_[0][1]->('del', $_[0][0], $_[1]); # Call the report writer
      delete $_[0][0]->{$_[1]};          #  $_[0]->SUPER::DELETE($_[1]) }


    package main;

    tie %new_hash, 'NewHash';
    tie %new_std_hash, 'NewStdHash';
    tie %new_extra_hash, 'NewExtraHash',
    sub {warn "Doing \U$_[1]\E of $_[2].\n"};  


Код


  package ReportHash;
  our @ISA = 'Tie::StdHash';

  sub TIEHASH  {
    my $storage = bless {}, shift;
    warn "New ReportHash created, stored in $storage.\n";
    $storage
  }
  sub STORE    {
    warn "Storing data with key $_[1] at $_[0].\n";
    $_[0]{$_[1]} = $_[2]
  }



Код

  package ReportHash;
  our @ISA = 'Tie::StdHash';

  sub TIEHASH  {
    my $storage = bless {}, shift;
    warn "New ReportHash created, stored in $storage.\n";
    [$storage, @_]
  }
  sub STORE    {
    warn "Storing data with key $_[1] at $_[0].\n";
    $_[0][0]{$_[1]} = $_[2]
  }  


что такое $_[0][0]{$_[1]} = $_[2] ?
  

в чем разница если я сделаю так, например:
Код

$self->[0]->[0]->{hash0}->{hash1} ='page1';
$self->[0]->[0]->{hash0}->{hash1} = sub {};

$self->[0]->[1]->{hash0}->{hash1} ='page2';
$self->[0]->[1]->{hash0}->{hash1} = sub {};


Это сообщение отредактировал(а) gcc - 4.3.2009, 16:06
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.