Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   можно ли переопределить операторы? (https://javascript.ru/forum/misc/10062-mozhno-li-pereopredelit-operatory.html)

tenshi 17.06.2010 23:48

отсутствие перегрузки операторов не даёт делать на яваскрипте нормальные дсл-и и вводить дополнительные типы

B~Vladi 17.06.2010 23:54

Цитата:

Сообщение от tenshi
отсутствие перегрузки операторов не даёт делать на яваскрипте нормальные дсл-и и вводить дополнительные типы

Приведи хоть один пример, где без этого не обойтись?

qwoiejfoiej 18.06.2010 00:05

А вы уверены, что это правильный вопрос? Обойтись можно без многого, особенно без Javascript. Вопрос ведь в удобстве...

Gvozd 18.06.2010 00:46

Цитата:

Сообщение от qwoiejfoiej
Вопрос ведь в удобстве...

почему тогда все языки не выкинули из себя все то, что у них "неудобно", и не взяли от остальных языков все удобное.
и не стали кучей абсолютно идентичных языков?
а потому что удобство определяется конкретной областью применения, идеологией языка, и еще многими факторами, и не явялется константой.

Вот примеры:
- множественное наследование, или отсутствие его?
- прототипное ООП, или же классовое. или вообще процедурное? а может функциональное?)
- возможность писать быстро выполняемый код(ASM), или же удобная абстракция, позволяющая быстро писать код
- и еще куча

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

Вы придумываете что "будет удобней" для JS, исходя из опыта изучения всего лишь одного языка.
я практически уверен, что для вас составить Тьюирингову машину, или написать ASM_код нереально. или понять идеологию функциональных языков(я сам ее недостаточно понимаю, но просто не было практической необходимости)

qwoiejfoiej 18.06.2010 01:19

Цитата:

Вы придумываете что "будет удобней" для JS
Я? Вы меня с кем-то путаете. Я просто задал вопрос. :)

И мне всё-таки интересно, почему перегрузка операторов и пользовательские типы не кошерны в JS.

tenshi 18.06.2010 03:17

например, хотим мы реализовать комплексные числа или вектора с матрицами..


без перегрузки операторов:

val1= val1.add( val2 ).sub( val3.mult( val4 ) )

if( val1.eq( val2 ) )..


с перегрузкой:

val1+= val2 - val3 * val4

if( val1 == val2 )..


Часовой пояс GMT +3, время: 20:09.