| Aquahawk |
03.10.2012 18:07 |
startPosition ||= чтовамнадо.
Буквально сегодня на работе рассматривали как работают параметры по умолчанию. Они не могут быть никакими типами кроме простых, намбер, инт, uint, string. А не могут быть т.к. эти значения сохраняются в структуре описателя метода отдельно от кода. Описано как это происходит в AVM 2 Overview в подразделе 4.5.1 раздела 4.5 который описывает структуру описывающую метод.
Цитата:
4.5.1 Optional parameters
The option_info entry is used to define the default values for the optional parameters of the method. The
number of optional parameters is given by option_count, which must not be zero nor greater than the
parameter_count field of the enclosing method_info structure.
option_info
{
u30 option_count
option_detail option[option_count]
}
option_detail
{
u30 val
u8 kind
}
Adobe ActionScript Virtual Machine 2 (AVM2) Overview 26
Each optional value consists of a kind field that denotes the type of value represented, and a val field that is an
index into one of the array entries of the constant pool. The correct array is selected based on the kind.
Constant Kind Value Entry
CONSTANT_Int 0x03 integer
CONSTANT_UInt 0x04 uinteger
CONSTANT_Double 0x06 double
CONSTANT_Utf8 0x01 string
CONSTANT_True 0x0B -
CONSTANT_False 0x0A -
CONSTANT_Null 0x0C -
CONSTANT_Undefined 0x00 -
CONSTANT_Namespace 0x08 namespace
CONSTANT_PackageNamespace 0x16 namespace
CONSTANT_PackageInternalNs 0x17 Namespace
CONSTANT_ProtectedNamespace 0x18 Namespace
CONSTANT_ExplicitNamespace 0x19 Namespace
CONSTANT_StaticProtectedNs 0x1A Namespace
CONSTANT_PrivateNs 0x05 namespace
|
Вот собственно типы которые там могут быть.
Добавлено через 2 минуты
illuzor
пробуйте перед тем как писать. Не получится так сделать. В силу устройства AVM это не возможно. Компилятор может это разрулить другим способом, но не делает этого.
Добавлено через 15 минут
А ну т.к. конструктор есть обычный метод, то всё вышесказанное относится и к конструктору и к методу. В параметры по умолчанию нельзя засунуть массив.
|