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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     28 Feb 2003  15:06:50
 To : Konstantin Dolgan
 Subject : Re: Hashes as keys
 -------------------------------------------------------------------------------- 
 
 Konstantin Dolgan wrote:
 
 > 
 > Можно ли сделать что-то подобное?
 > Имеется:
 > 
 > my $hash1 = {
 >               { 'name' => 'ivanov',
 >                 'mail' => 'ivan@mmm.com',
 >                } => 1,
 >               { 'name' => 'petrov',
 >                 'mail' => 'petr@mmm.com',
 >                } => 2,
 >              };
 > 
 > my $hash2 = { 'name' => 'petrov',
 >               'mail' => 'petr@mmm.com'
 >              };
 > 
 > Hадо:
 > вытащить из $hash1 значение с ключем $hash2,
 > или проверить наличие оного exists-ом.
 > Реально ли такое чудо?
 
 Hа "настоящих" хэшах - нереально. Читать perldoc perlref
 в районе:
 
 WARNING
   You may not (usefully) use a reference as the key to a hash.  It will
   be converted into a string:
 
 > Пробовал "tie %$hash1, 'Tie::RefHash'" - наверное, не так пробовал:
 > 
 > $hash1->{$hash2} всегда получается =1,
 > $hash1->{%$hash2} - всегда =undef,
 > а exists - всегда exists.
 > 
 > То ли лыжи не едут, то ли я ....????
 
 Боюсь что Вы. Боюсь дважды. Первый раз делая tie
 на уже заполненый хэш, отчего в нем ссылки уже преобразованные
 в строки отнюдь не исправятся обратно сами собой.
 Второй раз, предполагая, что если содержимое хэшей
 идентично (%$hash2 и анонимные хэши ссылки на которые
 являются ключами в %$hash1), то и ссылки на них можно
 использовать произвольно. Это не так. Содержимое этих
 хэшей никто проверять не будет, а ссылки на них не равны
 друг другу. Посему извлечь что либо из %$hash1 по ссылке
 $hash2 использованной в качестве ключа можно будет только
 в том случае, если мы и записывали в %$hash1 информацию
 используя $hash2 в качестве ключа. Безразлично, поменяли
 мы после этого содержимое %$hash2 или нет.
 
 Андрей
 
 P.S. Прочитать вдумчиво 2 раза.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Hashes as keys   Konstantin Dolgan   28 Feb 2003 11:58:25 
 Re: Hashes as keys   Yury Kopyl   28 Feb 2003 14:52:53 
 Re: Hashes as keys   Andrey Sapozhnikov   28 Feb 2003 15:06:50 
Архивное /ru.perl/65772c5c73ca.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional