![]() |
Проблема с хэш'ем
Стояла простая задача -
имеются зарезервированные слова 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 Тогда этот вариант работает. Будте внимательны, не наступите, как я, на эти грабли. |
Как гласит народная мудрость - умная мысля приходит ... по утрам... :)
Надо было написать if (H[WX]==1) Action1; else Action2; (*) и всё бы сложилость..... Всем - спасибо за внимание. Топик закрыт. |
| Часовой пояс GMT +4, время: 16:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.