Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переопределение операторов в AS3 (http://www.flasher.ru/forum/showthread.php?t=98657)

Ляксей 18.07.2007 13:58

Переопределение операторов в AS3
 
Только начал разбираться с третим скриптом. Вижу что много нового полезного добавили. А переопределение операторов добавили?

etc 18.07.2007 14:06

А что подразумевается под «переопределение операторов»?

BigDan 18.07.2007 14:13

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

Ляксей 18.07.2007 14:27

Если кто программировал на C++, то помнят , что там можно переопределить такие операторы как +,-,=,==,[] и т.д.
Например для класса Vector3D очень бы хотелось писать так

Код:

var a:Vector3D = new Vector3D(1,0,0);
var b:Vector3D = new Vector3D(0,1,0);
b += a; // b(1,1,0) - теперь

а не так

Код:

var a:Vector3D = new Vector3D(1,0,0);
var b:Vector3D = new Vector3D(0,1,0);
b = b.Sum(a); // b(1,1,0) - теперь

Кстати вопрос в догонку, как управлять оператором =
То есть как я могу указать я хочу ссылку на объект скопировать или просто скопировать все члены объекта? В AS2 мне приходилось писать функцию CreateCopy, которая создавала новый объект такого же класса, копировала все члены и возвращала ссылку.

__i 18.07.2007 14:32

Ненужно этого делать, ибо плохой стиль программирования, если работаешь в комманде - неочевиден результат для напарника, хотя если работаешь сам с собой то все нормально.

etc 18.07.2007 14:36

Цитата:

Сообщение от Ляксей
Кстати вопрос в догонку, как управлять оператором =

Никак.

Ляксей 18.07.2007 14:55

Цитата:

Сообщение от __i
Ненужно этого делать, ибо плохой стиль программирования, если работаешь в комманде - неочевиден результат для напарника, хотя если работаешь сам с собой то все нормально.

Не нужно чего делать? Это про какой пункт?
Если про операторы += и тому подобные, то как же Вы порекомендуете поступать с векторами и матрицами?
Как раз для таких типов подобные оперторы это хороший стиль программирования, т.к. операции суммы, вычитания, скалярного умножения или веторного умножения вполне определённые вещи.
Кстати, может есть встроенные 2D или 3D вектора ?

john 18.07.2007 15:33

2Ляксей

потому что ECMA,
а по поводу хорошего стиля, согласен, нехрен повторять умные слова из заумных книжек.

а просто методами нельзя подобное сделать? приведи пример?

и еще бы посоветовал порыть сырцы какой нибудь 3D либы типа Papervision и физического движка на AS3.

Ляксей 18.07.2007 15:53

Цитата:

Сообщение от john
2Ляксей
потому что ECMA,
а по поводу хорошего стиля, согласен, нехрен повторять умные слова из заумных книжек.

Согласен с кем? Причём тут заумные книжки, речь идет об удобстве программирования, читабельности кода и прочих вещах повышающих
производительность труда.

Цитата:

Сообщение от john
а просто методами нельзя подобное сделать? приведи пример?

Можно и просто методами. Код внутри опертора * и метода mult будет практически один и тот же.
Только первый вариант более читабельный.

Код:

c  = b*a;                    // вариант 1

c = b.mult(a);            // вариант 2

Вы вот попытайтесь написать что-нить интенсивно использующее математику типа 3D движка на Flash или сложный движок частичек( со всякими физ силами и прочей красотой), тогда удобство/неудобство описанных концепций Вам станет более очевидным.

john 19.07.2007 01:19

мне и так все очевидно,
кратко - да,
возможности которые нельзя сделать методами - нет.

я хотел увидеть пример реализации который действительно нельзя реализовать с помощью методов...

а согласен я был с вами.


Часовой пояс GMT +4, время: 23:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.