Узнайте, есть ли в ActionScript функция varargs / необязательные аргументы с использованием отражения? - PullRequest
0 голосов
/ 09 апреля 2011

Учитывая объект функции ActionScript, есть ли способ определить, имеет ли эта функция один или несколько необязательных параметров или параметры vararg?Кажется, свойство length возвращает минимальное количество принятых аргументов:

function vararg(a:*, b:*, ...rest):void {}
function optional(a:*, b:* = null, c:* = null):void {}

trace(vararg.length);   // 2
trace(optional.length); // 1

Я попытался отразить свойства функции:

for (var name:String in optional) {
  trace(name + ": " + optional[name];
}

Однако это ничего не вывсе.

Кто-нибудь знает, как открыть эту информацию с помощью размышлений?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Что ж, я могу немного приблизить вас, но не до конца.

Если вы вызовете describeType для объекта, который имеет функцию И эти функции общедоступны, вы получите больше информациио функциях:

var description:XML = describeType(this);
var testFunction:* = description.method.(@name == "optional")[0];

trace(testFunction);

Это даст вам полезный вывод:

<method name="optional" declaredBy="MyClass" returnType="void">
  <parameter index="1" type="*" optional="false"/>
  <parameter index="2" type="*" optional="true"/>
  <parameter index="3" type="*" optional="true"/>
  <metadata name="__go_to_definition_help">
    <arg key="file" value="/path/to/MyClass.mxml"/>
    <arg key="pos" value="222"/>
  </metadata>
</method>

Он также не расскажет вам о ...rest varargs.Итак, есть два предостережения: они должны быть публичными И вы не получаете varargs ... но вы действительно получаете гораздо больше информации ...

Я не уверен, что вы сможете получить большеинформация, чем эта.

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

1 голос
/ 12 апреля 2011

http://bugs.adobe.com/jira/browse/FP-1472 - это ошибка при добавлении переменных к описанию типа.У него есть приоритет «нет», что не дает большой надежды, что это будет исправлено.Возможно, голосование за это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...