
27.07.2002, 04:00
|
|
|
Guest
|
Проблема с хэш'ем
Стояла простая задача -
имеются зарезервированные слова 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
Тогда этот вариант работает.
Будте внимательны, не наступите, как я, на эти грабли.
|