JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 43 44 [45] 46 47 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#661
,
|
|
|
|
Цитата Астарот @ Сторонний прогер даже не заметит что ему что-то там стало приходить, у него все будет работать по-прежнему Захочет использовать новые данные - пойдет в доку, увидит что они уже передаются, и перепишет свой обработчик под них. Не захочет - ну не нужны они ему! - и так все работать будет. А с твоей чехардой с параметрами - объяви так, не объявляй сяк - что будет? Отвалится в самый неожиданный момент?А в строгом случае все будет зависеть от того, как сторонний прогер написал свой обработчик. Если у него там указан прием произвольного количества аргументов, то будет точно так же, как ты описал. Если же он прямо передаст в качестве обработчика функцию, не принимающую аргументов(если он так сделал, значит хотел контроля ), то отвалится.Что требуем, то и получаем. |
|
Сообщ.
#662
,
|
|
|
|
А в первом случае можно быть уверенным, что ничего не отвалится и я не завишу от другого прогера...
|
|
Сообщ.
#663
,
|
|
|
|
Цитата fatalist @ А в первом случае можно быть уверенным, что ничего не отвалится и я не завишу от другого прогера... Ты в любом случае не зависишь. А вообще о том, что в новой версии ты оставляешь за собой право добавить еще 100500 параметров, нужно предупреждать |
|
Сообщ.
#664
,
|
|
|
|
Фигасе вы тут веселитесь, MyNameIsIgor прокачали до 3-его лвла
... Ну даете Добавлено Вы с такими темпами скоро сами себя начнете банить Добавлено Я понял! Это JavaScript программисты провоцируют С++ программистов на мат, а потом им банки дают! Я раскусил ваш коварный план, негодяи |
|
Сообщ.
#665
,
|
|
|
|
Цитата KILLER @ Он сам прокачался... причем уложился в 2 страницы... Фигасе вы тут веселитесь, MyNameIsIgor прокачали до 3-его лвла ... Ну даете |
|
Сообщ.
#666
,
|
|
|
|
Цитата fatalist @ А в первом случае можно быть уверенным, что ничего не отвалится и я не завишу от другого прогера... А если прогер решит, что раз в обработчик ничего не передается, то можно в этом качестве использовать уже существующую функцию, которая принимает какой-то параметр? Т.к. в первоначальной версии обработчик вызывается без параметров, то в такую функцию придет undefined и все будет работать... А потом мы начинаем вызывать обработчик с параметром и в эту функцию приходит цвет, хотя она ждет, например, размер Весело... |
|
Сообщ.
#667
,
|
|
|
|
Цитата D_KEY @ Я всегда оставляю за собой это право, много аргументов не бывает... бывает только недостаточно А вообще о том, что в новой версии ты оставляешь за собой право добавить еще 100500 параметров, нужно предупреждать |
|
Сообщ.
#668
,
|
|
|
|
Цитата fatalist @ Он сам прокачался... Это достаточно спорное утверждение... Но к сути разговора отношения не имеет. Добавлено Цитата fatalist @ Я всегда оставляю за собой это право, много аргументов не бывает... бывает только недостаточно ![]() А разработчик, являющийся твоим клиентом об этом знает(см. выше)? |
|
Сообщ.
#669
,
|
|
|
|
Цитата D_KEY @ Ну если честно для "клиентов" я обычно оставляю методы по другой схеме... А разработчик, являющийся твоим клиентом об этом знает(см. выше)? |
|
Сообщ.
#670
,
|
|
|
|
Цитата fatalist @ Цитата D_KEY @ Ну если честно для "клиентов" я обычно оставляю методы по другой схеме...А разработчик, являющийся твоим клиентом об этом знает(см. выше)? Ты специально держишь интригу или твоя схема является государственной/коммерческой тайной? |
|
Сообщ.
#671
,
|
|
|
|
вкратце я делаю так
![]() ![]() { ... onCellClick : function (nRow, nCell) { return true; } } А прогер уже просто берет и ![]() ![]() grid.onCellClick = function(row, cell) { alert('Cell ['+ row + ', '+ cell + '] has been clicked'); } а если не хочет, не использует их... Добавлено Цитата D_KEY @ Очень хотелось сходить покурить... а потом начальница тут ходила инструкции раздавала Ты специально держишь интригу или твоя схема является государственной/коммерческой тайной? ) |
|
Сообщ.
#672
,
|
|
|
|
Цитата D_KEY @ korvin, ты тут вроде был, не пропадай, скажи как не теряя информации о типе работать с произвольным количеством параметров функции? Я же говорил, что произвольные параметры не нужны. У статически собранного списка вся информация о типе каждого аргумента может быть сохранена. ![]() ![]() type List {α : Type, β : Type} = Cons α (List β) | (Nil : ()) т.о. тип ![]() ![]() list = Cons 1 $ Cons "two" $ Cons False Nil будет ![]() ![]() list : List (Nat, String, Bool) соответственно объявляем например ![]() ![]() instance List {∀α <: Show} <: Show show : List α → () show Nil = () show (Cons x xs) = do show x show xs end end и при подстановке show list компилятор может преобразовать вызов в просто последовательность вызовов show для каждого элемента списка, разобрав предварительно этот список на элементы, фактически это даже можно сделать во время компиляции и в итоге получим просто ![]() ![]() show 1 show "two" show False |
|
Сообщ.
#673
,
|
|
|
|
korvin, покажи аналог моего кода, пожалуйста.
|
|
Сообщ.
#674
,
|
|
|
|
Цитата D_KEY @ А в строгом случае все будет зависеть от того, как сторонний прогер написал свой обработчик. Если у него там указан прием произвольного количества аргументов, то будет точно так же, как ты описал. Если же он прямо передаст в качестве обработчика функцию, не принимающую аргументов(если он так сделал, значит хотел контроля ), то отвалится.Что требуем, то и получаем. Ну и зачем мне все твои "если", когда у меня прекрасно работает без всяких условностей? То, что у меня есть сейчас удобнее.Цитата D_KEY @ А если прогер решит, что раз в обработчик ничего не передается, то можно в этом качестве использовать уже существующую функцию, которая принимает какой-то параметр? Т.к. в первоначальной версии обработчик вызывается без параметров, то в такую функцию придет undefined и все будет работать... А потом мы начинаем вызывать обработчик с параметром и в эту функцию приходит цвет, хотя она ждет, например, размер Весело... Если... решит... А если он решит микроскопом гвоздь заколотить, то потом будет удивляться почему микроскоп не работает, и придет к выводу, что что-то с микроскопом не так? Цитата D_KEY @ А разработчик, являющийся твоим клиентом об этом знает(см. выше)? Сейчас ему и не надо. Добавлено Цитата fatalist @ вкратце я делаю так При таком способе некуда впихнуть действия которые по клику хочешь сделать ты сам |
|
Сообщ.
#675
,
|
|
|
|
Цитата Астарот @ Почему? Я же этот метод непосредственно из onclick ячейки вызываю, там же дефолтные действия при клике на ячейке... При таком способе некуда впихнуть действия которые по клику хочешь сделать ты сам Добавлено Цитата fatalist @ или чтобы не загромождать обработчик самой ячейки делаю какой-нибудь метод cellClick (для внутреннего пользования ессно)... Его еще можно будет пользовать при необходимости сэмулировать клик на ячейке (без самого клика)... Почему? Я же этот метод непосредственно из onclick ячейки вызываю, там же дефолтные действия при клике на ячейке... |