Ошибка в рекламе экономического развития Луизианы?

#actionscript

#actionscript

Вопрос:

На днях я читал июньский номер журнала Wired за 2011 год и наткнулся на рекламу экономического развития Луизианы, предположительно написанную на ActionScript.

Изначально я думал, что это умная реклама, но после ее изучения оказалось, что в коде есть довольно очевидная ошибка.

Светодиодная реклама

Мне только кажется, или это break должно быть return ?

Комментарии:

1. Это должен быть возврат, если только идея не в том, что независимо от того, есть ли у innovator какие-либо из перечисленных интересов, они все равно должны переходить по указанному URL … но это не единственная ошибка. По-видимому, они не могут решить, писать ли они AS2 или AS3, поскольку пробел в нижнем регистре и существование uint указывают на AS3, но navigateToURL существует только в AS2. С другой стороны, возможно, они объявили функцию в другом месте своего кода с именем navigateToURL из ностальгии.

2. Я думаю, вы, возможно, как раз тот парень, которого они хотели бы пригласить проверить возможности в Луизиане — // Видите ли вы эту возможность? С другой стороны, может быть, это не ошибка, и они просто хотят, чтобы все ознакомились с возможностями Луизианы.

3. О, но, несмотря на ошибку и неоднозначную ошибку языка сценариев, я должен отдать им должное за сохранение var n:uint = interests . длина; Это на самом деле обеспечивает повышение производительности во время выполнения в ActionScript… не то чтобы это имело значение для массива из 3 элементов.

Ответ №1:

Я бы назвал это не столько ошибкой, сколько ошибочной логикой … перерыв выведет вас из цикла, но если вы введете эту функцию, вы перейдете по этому URL, независимо от того, заинтересованы вы во всех этих вещах или нет.

Комментарии:

1. «Я бы назвал это не столько ошибкой, сколько ошибочной логикой …» — Я использую это на моей следующей встрече по исправлению ошибок.

2. Да … после того, как я опубликовал это, я подумал про себя, что ошибочная логика, приводящая к непреднамеренным последствиям, в значительной степени представляет собой ошибку.

Ответ №2:

Я бы назвал это ошибкой, поскольку желаемым результатом, скорее всего, было бы перейти по URL, если какой-либо из этих интересов сохранен, и ничего не делать, если ни один из них не сохранен. Таким образом, я бы изменил логику на следующую (игнорируя на данный момент проблемы, упомянутые в комментарии от scriptocalypse):

 if (this.innovator.hasInterestIn(interest[i])){
    navigateToURL("www.OpportunityLouisiana.com/digital");
    return;
}
  

Конечно, в рекламе это выглядело бы не так хорошо, поскольку URL-адрес не был бы виден внизу кода. Возможно, лучшей альтернативой было бы организовать логику в цикле следующим образом:

 if (this.innovator.hasInterestIn(interest[i])){
    break;
} else if (i == n-1){
    return;
}
  

Комментарии:

1. Я не согласен, желаемый результат, вероятно, заключается в переходе по URL, если все три верны, а не только один из них. В противном случае цикл просто неправильный на новом уровне.

2. @vakio: Вы правильно подметили. Если это так, то break; определенно должно быть return; .

Ответ №3:

Да, это должно быть возвращением. Прямо сейчас, в существующем виде, navigateToURL запустится, даже если у пользователя нет ни одного из интересов.