Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Допустимость использования нестандартного синтаксиса. (http://www.flasher.ru/forum/showthread.php?t=160765)

fish_r 17.07.2011 10:31

Допустимость использования нестандартного синтаксиса.
 
Есть класс (ассет) содержащий коллекцию методов с одинаковой структурой, но разными данными. Методы имеют сходные названия, например:

Код AS3:

private function some1():Array{} private function some2():Array{} private function some3():Array{} private function some4():Array{}

В запросе к единственному публичному методу класса в аргументе передается только номер нужного метода.
Структура этого метода примерно такая:

Код AS3:

public function returnSome(nm:uint):Array { return this["some" + nm](); }


Насколько допустим такой синтаксис. Язык его поддерживает. Но, в принципе, приветствуется такой подход?
Может есть какие нибудь подводные камни?

ps Сообщение какое то странное получилось, не могу нормально отформатировать. После предварительного просмотра исчезли BB-коды

wvxvw 17.07.2011 11:19

пофиксил.

Паттерн называется "Паблик Морозов" если что :)

fish_r 17.07.2011 12:23

но бить не будут? :)

gloomyBrain 17.07.2011 12:31

Цитата:

но бить не будут?
Бить - вряд ли =)
но, по хорошему, я бы сложил методы в Array или Vector.<Function> и вызывал бы по индексу. Или Dictionary

Котяра 17.07.2011 13:07

Цитата:

но бить не будут?
Павлика вроде бы убили.

fish_r 17.07.2011 13:47

Цитата:

Сообщение от gloomyBrain (Сообщение 1012263)
но, по хорошему, я бы сложил методы в Array или Vector.<Function> и вызывал бы по индексу. Или Dictionary

Да, так и сделал. Я то надеялся, что не проинициализированные лок.переменные не потянут за собой объявляемые ими классы. Ан нет - без разницы...

wvxvw 17.07.2011 18:40

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

fish_r 17.07.2011 19:55

Да. Мысль я понял. В другом случае существование такого метода в классе было бы просто верхом головотяпства. Но специфика этого класса, как раз, и заключается в том, чтобы хранить наборы данных в методах (собственно каждый из них хранит наборы фильтров), и по запросу отдавать нужный набор.
Я, просто, предположил (не подумавши), что, возможно, переменные в не запрошенных приватных методах,
представляющие тот или иной фильтр, не потянут во флешку классы которые они представляют. Попробовал - убедился, что это не так, потом понял, что иначе и быть не может :) И решил, что ни к чему жертвовать возможностью давать методам человекопонятные, не однообразные имена.


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

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