parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

5. Создание двумерного хеша динамически - грабли

Newbie 15.08.2009 12:23

Продолжая "серию тупых вопросов" в ходе погруженного изучения Парсера экспресс-методом. Из документации не очевилно, на форуме куча мимо темы - поэтому не нашел.

5. ЗАДАЧА - наполнить двумерный хеш динамически. Одномерный, то без проблем.
Рассуждая в природе хеша - двумерный хеш - это обычный одномерный хеш, где в значении каждого ключа хранится
отдельный самостоятельный хеш, а наверное ссылка на хеш.

Всяко пробовал - по-человечески эта элементарная задача не выходит.
# Вариант 1
$myhash[^hash::create[]]
^for[i](0;10){
      ^for[j](0;10){
                       $myhash.$i.$j[x=$i y=$j]    # Выдаст ошибку о том, что ТАК нельзя

                   }
             }
$myhash.3.10    # До этого дело не доходит
# Варинат 2 - более извращенный
$ihash[^hash::create[]]
$jhash[^hash::create[]]
^for[i](0;10){
          ^for[j](0;10){
                           $jhash.$j[x=$i y=$j]  # "Набиваем" одномерный хеш $jhash.0..10[]
                       }
                           $ihash.$i[$jhash]     # "Набиваем" одномерный хеш $ihash.0..10[$jhash-ами]
             }
$ihash.0.5  # Выдаст x=10 y=5
$ihash.3.3  # Выдаст x=10 y=3
$ihash.6.5  # Выдаст x=10 y=5
#
# Видимо это происходит потому, что $jhash в каждом цикле перетирается - и то что заносится в $ihash - это все ссылка на один и тот же hash
# отсюда видимо следует что и так - не прокатит - и нужно $ihash набивать $jhash-ем методами типа add  или union
Получить "эффект" ручного создания многомерного хеша ^process-ом тоже не выходит, то есть:
Отэкранировать "птичкой" и положить это в ^process[] ничего не дает - ругается
$myhash[
$.0[ $.0[..] $.1[..]]
$.1[ $.0[..] $.1[..]]
]


Не по-уродски - как у меня - эта простая примитивная задача решается?