parser

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

 

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

Нашел интересный глюк с хешами

Bitmag 27.01.2009 01:58 / 27.01.2009 02:12

$IL[
$.delete[$.ru[удалить]]
$.close[$.ru[закрыть]]
]

$IL.delete.ru
замечательно работает.

А теперь хеш IL создадим из базы:

$IL[^hash::sql{select gb,ru from lang}] (запись с gb='delete', gb='add' в таблице есть)

и снова пробуем:

$IL.add.ru
и тоже замечательно работает!!! (заметить легко что 'add' в руками созданной таблице нет)

А теперь закомментируем вначале:
#$IL[
#$.delete[$.ru[удалить]]
#$.close[$.ru[закрыть]]
#]

И при вызове $IL.delete.ru или $IL.add.ru получим ошибку: ru is 'junction', it has no elements

Итог:

работающий код:
$IL[
$.delete[$.ru[удалить]]
$.close[$.ru[закрыть]]
]

$IL.delete.ru
замечательно работает.

А теперь хеш IL создадим из базы:

$IL[^hash::sql{select gb,ru from interface_lang}]  (запись с gb='delete' в таблице есть)

и снова пробуем:

$IL.delete.ru
неработающий код:
#$IL[
#$.delete[$.ru[удалить]]
#$.close[$.ru[закрыть]]
#]

$IL.delete.ru
замечательно работает.

А теперь хеш IL создадим из базы:

$IL[^hash::sql{select gb,ru from interface_lang}]  (запись с gb='delete' в таблице есть)

и снова пробуем:

$IL.delete.ru

ошибка ru is 'junction', it has no elements
У себя в коде применил "workaround": поставил перед запросом из базы $IL[$.abracadabra[$.ru[кадабра]]] :) - все работает