Рубрики
Без рубрики

“XY Проблема” в дикой природе.

Из входной проблемы в Википедии XY. Реальная проблема (“x”) человека, просящего о помощи, скрыта … Tagged с JavaScript, Xyproblem, LearnProgramming.

Из Википедии XY Проблема вход.

Реальная проблема («X») человека, просящего помощь, скрыта, потому что вместо того, чтобы прямо спрашивать о проблеме X, они спрашивают, как решить вторичную проблему («Y»), который, по их мнению, позволит им решить проблему X.

В течение последнего месяца или около того я делал карточную игру в качестве личного проекта. Я использую JS и Phaserjs Игровой двигатель, чтобы стать лучше в обоих, потому что почему бы и нет. Сегодня вечером я работал над созданием пирамиды карт, создавая абстракцию. Когда вы нажимаете на карту, она получает массив выбранных карт, которые она покрывает. Затем он переходит на все детские карты и удаляет карту щелчков из списка родителей детей. Когда родительский список любой карты составляет нулевой длины, карта идет лицом вверх.

Но это не сработает. Вместо того, чтобы снять одну карту в качестве родителя, она просто полностью очистила массив. Почему? Что, черт возьми, не так с вами?

Но ждать. Анкет Анкет Какая? Когда JavaScript Array.filter Беги, Все Соответствующие переменные становятся неопределенными? Что почему?

Вот фотография Chrome Devtools Перед фильтр , А потом вот это после фильтр Анкет

Как вы можете видеть в списке переменных справа, JavaScript потерял свое мнение и очищает мои переменные по, казалось бы, без причины (или я так думал).

Так что я копаю и копаю. Интернет -поиск, информация о Array.filter , и т. Д. И ничего не работает. Наконец я сломаюсь и публикую, чтобы сложить переполнение. Хороший парень (редкость в наши дни) довольно быстро запрыгивает на комментарии и делает несколько предложений, включая пару ссылок на переменную область.

. . Вы видите это? проблема XY?

Я потратил хорошие 5 часов, пытаясь выяснить, почему мои переменные очищаются, но мне напомнили, что они полностью не в силе в функции обратного вызова Array.filter Анкет Я имею в виду, я знал, как это должно работать Но я был настолько зонирован на «исчезающем дерьме», что не мог видеть лес для деревьев.

Еще лучше (или, что еще хуже, в зависимости от того, как вы на это смотрите), с шляпами, я полностью пропустил Фактическое проблема. Я полностью забыл, что настоящий вопрос не имел никакого отношения к переменной области, включающей функции обратного вызова. Это было о расчистке массива.

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

Истинное решение? Посмотрите на строку 131 на изображениях.

Мораль истории такова:

Когда вы слышите копыта, подумайте о лошадях, а не зебрах.

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

Оригинал: “https://dev.to/ogrotten/xy-problem-in-the-wild-2ge9”