| Re[64]: Динамические языки и переменные | |
| От: | Воронков Василий | ||
| Дата: | 18.03.10 17:09 |
| Здравствуйте, Temoto, Вы писали: ВВ>>Нет, конечно. А что есть генераторы парсеров, у которых сканеры на регекспах? Регекспы штука небыстрая вообще. T>Тааакк... Какой? И почему "лексер"? ВВ>>А ведь еще можно вспомнить, что сортировать можно по одному выражению, а выбирать по другому. T>Да, потому что выборка и сортировка это разные вещи. Они совмещены в SQL и LINQ. Я не хочу сказать, что это плохо, что они совмещены. Я хочу сказать, что там где они не совмещены, тоже всё нормально и те же задачи решаются так же легко. Может быть. Но как написать аналогичный код на Хаскеле ты так и не показал. T>И меня немного смущает, что ты можешь obj.GetEven сунуть функцию, в теле которой используется this и функцию, в теле которой this не используется. То есть где-то там, в километре строк отсюда, объявлена функция, в теле которой используется this. И к какому объекту будет применён этот this — никто не знает. Лично меня это очень сильно расстраивает в жаваскрипте. Мне вообще казалось, что эта фича. Ты одну и ту же функцию можешь использовать как член различных объектов и она будет работать по-разному. А какие могут быть с этим проблемы? Ну так вроде динамика же, "позднее связывание" c this, так сказать. T>В C# эта проблема решена тем, что методы нельзя объявлять вне скопа класса, поэтому всем понятно что значит this. А тут будет непонятно. Как в жаваскрипте. Нельзя, но смысл "this" все равно может отличаться. Объектно-ориентированный же язык. При желании можно даже извернуться, что this будет null. У меня если ф-ция не вызывается как член объекта, то this == null. В ДжаваСкрипте же все совсем по-другому, там другой this. this — это просто создание/обращение к особой переменной внутри замыкания, к которой можно обращаться в извне. Вообще любой объект в ДжаваСкрипте — это функция.
ЗЫ. Кстати, я тут переделал грамматику, теперь все является expression. Можно писать всякую хрень вида:
Ela 0.9 Dynamic, functional, strict and lazy |