2009-07-14 4 views
3

Поскольку я работал с AS, я разработал набор функций утилиты. Например:ActionScript: Несколько открытых функций в одном файле .as?

$ cat utils/curried.as 
package utils { 
public function curried(f:Function, ...boundArgs):Function { 
    function curriedHelper(...dynamicArgs):* { 
     return f.apply(null, boundArgs.concat(dynamicArgs)); 
    } 
    return curriedHelper; 
} 
} 

И я нашел, что несколько раз, я хочу, чтобы держать более одной публичную функцию в каждом файле ... Но ActionScript ограничивает меня одного публичного определения для каждого файла, если что файл определяет его сам как часть пакета.

Итак, не создавая класс со статическими методами, как я могу получить более одной публичной функции в одном файле .as?

+0

чем причина против использования класса? – Josh

+0

Я не хочу иметь префикс для функций, когда я их использую. Например, я хочу использовать «curried (foo, bar)» вместо «Utils.curried (foo, bar)». –

+0

Мне нужно было спросить об этом, почему бы не использовать несколько файлов? AS3 допускает одно публичное объявление в файле, это то же самое для функций, что и для классов. Разве не имеет смысла хранить один файл? (дисковое пространство дешево, и вы все равно можете импортировать дикие карты). Я не понимаю предложения по размещению функций как статических методов в классе. Класс - это отличная абстракция, чем функция. Люди делают это на Java, просто потому, что язык не позволяет выполнять автономные функции. –

ответ

7

Проще говоря, вы не можете ... для функции уровня пакета декларации, необходимо один файл на заявленной функции ...

немного примечание стороны: лично я пошел бы путь Джоша и набейте в класс ... я думаю, что разрешать объявления уровня уровня вообще было просто иметь немного более обратную совместимость с AS2 ... это нормально, для прототипирования или вещей, которые никогда не покинут ваши руки ... но вы полагаетесь полагаться на 3-4 библиотеки, каждый из которых раскрывает свою функциональность через функции уровня пакета? во-первых, он полностью спам вашей автозаполнения (если ваша IDE предлагает один), а во-вторых, вам всегда нужно посмотреть на импорт, чтобы узнать, какая функция исходит от того, где ... префикс, который вы упомянули, на самом деле имеет большое преимущество ... но нормально , это мое мнение ...

Greetz

back2dos

+0

Спасибо - я не рассматривал, например, автозаполнение спама. –