![]() |
Проблема с реализацией класса
Есть следующий код:
Код:
class Vector {в выделенном месте создается еще один экземпляр класса, но проблема в том, что трейсится всегда ноль, хотя по идее должно быть инвертированные координаты вектора. Не могу понять в чем дело...:wacko: |
Я тоже не могу понять, что значит «создается ещё один экземпляр класса» и «трейсится всегда ноль».
И с какой стати должно быть что-то иное, кроме пустого массива, если у вас в конструкторе нет параметра с массивом координат? |
попробую вот так объяснить:
метод invert() данного вектора создает еще один вектор у которого каждая координата является числом, равным произведению соответствующей координаты данного вектора на -1. Код:
var __vec:Vector = new Vector(__coord);умноженными на -1. И свойство coordinates этого вектора выводится как равным нулю |
А где происходит обработка полученного в конструкторе массива? У вас — нигде не происходит, конструктор вообще принимает 0 параметров. Зачем юзать arguments там, где не надо?
Впрочем, строка var reverse = shifter.reverse(); меня сильно смущает. Метод reverse возвращает Void, между прочим. И ещё не понимаю смысла в двойном развороте массива. |
Код:
public function Vector() { |
arguments обрабатывает. не совсем читабельно, но почему нет
|
в смысле код не читабельный?
|
В смысле код кривой. Про reverse я уже сказал (во-первых он не нужен, во-вторых если надо получить ничего, то проще return вообще не писать).
|
Код:
если использовать for...in для массива на примереиспользовать что касается return то надо получить новый вектор |
Зачем надо? for in в обратную сторону не весь массив что-ли обойдет? В данном случае это точно лишнее. Кроме того, метод reverse, повторюсь, возвращает Void. Вникаем. Ищите ошибку, я уже указал, что и где. И пошёл спать.
|
функция controllElem(param:Array)
уже после строчки var shifter:Array = (param.length != 1) ? param.shift() : param; массив трейсится как ноль |
На том же сайте:
Цитата:
Код:
var g:Array = [1,2,3]Цитата:
|
Цитата:
|
Код:
class Vector { |
неа. нужно чтобы свойство coodinates возвращало первый элемент arguments. т.е. массив, но в этом случае оно возвращает этот массив без первого элемента
|
решил. функцию controllElem() переделал таким образом:
Код:
private function controllElem(param:Array):Array { |
ну так убрать shift, я думал так нужно по ходу задачи
|
У меня есть большое подозрение, что ты усложняешь задачу какими-то ненужными циклами, шифтами, реверсами…
|
Цитата:
может со временем приду к более правильному решению задач. запустался в том, что один метод класса Array возвращает Array, другой Object, третий Void, еще String и Number. Мультикласс такой...:D |
| Часовой пояс GMT +4, время: 07:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.