PDA

Просмотр полной версии : Проблема с хэш'ем


Suhoff
27.07.2002, 04:00
Стояла простая задача -
имеются зарезервированные слова W1,W2,...,WN;
требуется - проверить - принадлежит ли слово WX в потоке слов зарезервированным словам.
Что делаем - создаем хэш (массив):

H[W1]=H[W2]=...H[WN]=1;

и в нужном месте проверяем:

if (H[WX]) Action1; else Action2; (*)

Всё вроде логично.....
Так вот.... если WX="pop" или "push" или названию любого другого метода объекта Array, то инструкция (*) при ЛЮБЫХ (!!) W1,W2,...,WN выдаст Action1, так как H[WX] вернёт ФУНКЦИЮ (метод объекта Array) и IF, соответственно, пойдёт по ветке true;

Приходится присваивать значения H["pop"]=H["push"] =....=0
Тогда этот вариант работает.

Будте внимательны, не наступите, как я, на эти грабли.

Suhoff
27.07.2002, 09:52
Как гласит народная мудрость - умная мысля приходит ... по утрам... :)

Надо было написать

if (H[WX]==1) Action1; else Action2; (*)

и всё бы сложилость.....

Всем - спасибо за внимание. Топик закрыт.