Как вы объявляете параметр, который может быть произвольного типа данных в ActionScript 3? - PullRequest
1 голос
/ 29 декабря 2010

Хотя это работает:

    public function func(settings)
    {
    }

Он сообщает о предупреждении, так каков стандартный способ сделать это?

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Вы можете использовать * или Объект:

public function foo(bar:*):void{
}

public function foo(bar:Object):void{
}

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/specialTypes.html#* http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/Object.html

2 голосов
/ 29 декабря 2010

Если набрать «*» или «Тип данных объекта», то это сработает, но на самом деле это не идеально. Вероятно, есть НЕКОТОРЫЙ способ указать правильный тип данных.

Один из ответов состоит в том, чтобы ввести входные данные для наиболее конкретного общего предка из всех возможных входных данных - например, если вы знаете, что это будет объект DisplayObject, но иногда это будет загрузчик, а иногда - Sprite, просто введите его в DisplayObject, поскольку и Loader, и Sprite являются технически DisplayObjects.

Другой способ, возможно, немного более "правильный", и это ввод его в интерфейс. Ваши объекты могут реализовать этот интерфейс, и тогда все готово.

Если вы используете «*» или «Объект», то в этот момент вы отказываетесь от всех возможностей отладки. В идеале вы хотите точно знать, какие объекты существуют и где они существуют в жизненном цикле вашего приложения. Каждый раз, когда вы разыгрываете что-то как объект, вы отказываетесь - вы говорите: «А затем он входит в этот туннель и исчезает», так сказать. Этого лучше избегать, особенно для более крупных проектов, которые должны поддерживаться другими людьми.

1 голос
/ 29 декабря 2010

вы должны обязательно указать тип возвращаемого значения и классы параметров. это делает ваш код быстрее и намного легче читать за 6 месяцев!

Так что это будет:

public function saveSettings(settings:Array):void
{
}

или что-то подходящее для вызова вашей функции :) Но не просто называйте это func .. назовите ее правильно:)

...