Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.10.2012, 17:57
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 1  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
По умолчанию Как задать массив по умолчанию в конструкторе класса?

Пока обхожусь таким образом:
Код AS3:
public function InfoWindow(st:Object,startPosition:Array=null,param:uint=100):void {
			if (startPosition==null)
Есть решения как во входящих параметрах конструктора предопределить массив?


Последний раз редактировалось Koopa; 03.10.2012 в 18:06. Причина: немного не правильный вопрос
Старый 03.10.2012, 18:05
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Код AS3:
... ,startPosition:Array = [1,2,890,42], ...

Старый 03.10.2012, 18:07
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 3  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
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 минут
А ну т.к. конструктор есть обычный метод, то всё вышесказанное относится и к конструктору и к методу. В параметры по умолчанию нельзя засунуть массив.
__________________
:)

Старый 03.10.2012, 19:03
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Не знаю будет ли работать , нету перед рукой компила

Код AS3:
private const ARRAY:Array = [1,2,3,4,5,6];
 
public function f(a:Array = ARRAY)
__________________
Марк Tween

Старый 03.10.2012, 19:12
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Не знаю будет ли работать , нету перед рукой компила
Не будет. Да смысл делать что-то подобное?
Можно с тем же успехом определять массив уже внутри метода

Старый 03.10.2012, 19:17
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Зачем это, если можно определить его в теле метода, если аргументом передался null?
__________________
тут я

Старый 03.10.2012, 19:25
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 7  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
Затем, что это не обязательные данные для класса. И если в класс поступает массив, то он будет отработан по нужному принципу.

Старый 03.10.2012, 19:30
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 8  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Вообщем я тож как-то пытался сделать перегрузку конструктора, так ничего у меня и не вышло. Так-что наверное единственный действенный способ, это передать Object, не самое красивое решение. Более элегантно - передать какой нить экземпляр класса с настройками.
__________________
Дети не должны знать о своих родителях

Старый 03.10.2012, 19:37
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 9  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
При чём тут перегрузка конструктора. В конструкторе так же как и в обычном методе могут быть значения по умолчанию. Но на них есть ограничение, только простые типы, ровно как и на обычные методы.
__________________
:)

Старый 03.10.2012, 19:39
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 10  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Затем, что это не обязательные данные для класса.
Ну дык null по умолчанию сделайте. В теле метода забивайте массив.
Перегрузки конструкторов в as3 нет, посему выкручиваются null'ами. А я статические методы определяю, возвращающие экземпляр класса, в котором они и прописаны.
__________________
тут я

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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