![]() |
Синтаксис неведомый мне
Всем добрый день! Недавно изучал скролл многоуважаемого Walsh и наткнулся на строки, которые привели меня в некоторое замешательство, потому как я такого синтаксиса еще не видел. Объясните кто-нибудь, пожалуйста, что это такое и с чем его едят:)
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
|
|
1.Буквальный "перевод" строки
Цитата:
Код:
if (pimp._y < pimp_start) {Код:
a = c < b ? c : b;у Wolsh'a справа стоит ссылка на функцию, которая была объявлена где-то в коде как Код:
function scrolling(){Код:
scrolling = function(){Вобщем, такой вот стиль. |
Спасибо Вам, добрые люди!
|
Интересный вопрос. В случае одного использования тернарного оператора все понятно. Но в коде Walsh'а их два. А если их два, то выполнение идет справа налево. Как выглядит аналог if/else в таком случае?
|
По первому вопросу более или менее ясно. Немного порылся в инете, но так и не понял:( зачем анонимная функция в данном примере? Почему надо писать scrolling, а не scrolling()? Тем более, что объявлялась она как
Код AS1/AS2:
|
Код AS1/AS2:
А в блоке function(){ } ты описываешь свои действия, выражения, и необязательно функции. Во втором примере можно написать более 1 выполняемой функции если нужно, в первом - только 1. |
nikewist
Следующий код даёт ссылку на функцию scrolling() Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Если более дотошно, то, грубо говоря, следующий код: Код AS1/AS2:
Код AS1/AS2:
|
Фуууухххх...В принципе я понял. Понял, что вместо того, чтобы вызвать напрямую функцию, мы вызываем анонимную функцию, которая вызовет ту функцию, которая мне нужна. Действительно, так проще и удобнее:D Вероятно, я отношусь к категории товарищей, которым надо пользоваться только if...:quiet:
Но если серьёзно, если мы вызываем анонимную функцию, которая фактически вызывает довольно определенную функцию, то зачем эти телодвижения, где логика, где рациональное зерно? В чем отличие в принципе работы. В математическом смысле. Потому что если я прописываю не ссылку на функцию, а напрямую вызываю функцию, то программа не работает...А с ссылкой работает. Работает, не работает, работает, не работает...:) |
Автор, часто бывает удобнее задать для какого-то действия функцию, и ее вызывать из разных мест - например, либо по нажатию кнопки, либо по какому-то другому событию. Например.
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
И еще. Поймите простую вещь - вот здесь: Код AS1/AS2:
Эта запись сродни Код AS1/AS2:
|
Ну всё, теперь вроде дошло! Спасибо всем огромное!!!:drinks:
|
Здесь использованы возможности функционального программирования, т.е. в отличии от стандартного ООП, где есть чёткое разделение на методы и свойства, в функциональном программировании функция (и даже класс) могут являться свойством.
|
Ну, собственно, именно потому что функция scrolling() вызывается там в нескольких случаях - при движении пимпочки, при нажатии на кнопки, при нажатии на трек, при вращении колеса мыши - естественно я не стал описывать ее как анонимную функцию-обработчик для каждого из этих событий)). Я дал ей имя и использовал его.
Добавлено через 59 минут Волгоградец, на твой вопрос по тернарному оператору. Цитата:
Код:
pimp._y = |
... На этом месте тема съехала в сторону. Сообщения перемещены в новую тему Interface для... Function .
|
| Часовой пояс GMT +4, время: 10:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.