![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2010
Адрес: (15,78,45)
Сообщений: 19
|
Не могу понять, почему _arr2==null?
Объясните, пожалуйста. public class Singleton { public static const ARR1:Array = [1, 2, 3]; public static const _instance = new Singleton(); public static const ARR2:Array = [3, 2, 1]; private var _arr1:Array = ARR1; private var _arr2:Array = ARR2; public function Singleton() { if (_instance) throw new Error("Class is singleton."); } public function get arr1():Array { return _arr1; } public function get arr2():Array { return _arr2; } } Последний раз редактировалось lubko; 22.06.2012 в 14:27. |
|
|||||
|
У вас реализация синглтона неправильная.
Плюс к тому же непонятны операции между статическими и обычными переменными. Сделайте так, и увидите разницу:
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Feb 2010
Адрес: (15,78,45)
Сообщений: 19
|
если поставить брейкпоинт на строке
будет видно что статическая константа ARR1 уже проинициализирована, а ARR2 все еще равна null. поэтому в _arr2 попадает null. переменные _arr1 и _arr2 нужны были лишь чтобы показать это. |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
а так?
__________________
low + |
|
|||||
|
|
|
|||||
|
Регистрация: Feb 2010
Адрес: (15,78,45)
Сообщений: 19
|
Цитата:
но кто-нибудь может ответить почему ARR2==null на указаной строчке |
|
|||||
|
Регистрация: Feb 2010
Адрес: (15,78,45)
Сообщений: 19
|
Цитата:
public class Singleton { public static const instance:Singleton= new Singleton; public function Singleton() { // Boolean(Singleton) is false when creating instance before static constructor executed. if(Singleton) throw new Error("Class is singleton."); } } public class Singleton { public static const _instance = new Singleton(); public function Singleton() { if (_instance) throw new Error("Class is singleton."); } } не совсем понимаю что значит эта проверка if(Singleton). но это вроде другой вопрос. хотя тоже интересно Добавлено через 4 минуты Цитата:
спасибо |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
1.
Цитата:
2. На момент создания статичного поля "instance" Singleton`а не существует (хотя наверное не класса, а функции-конструктроа), судя по комментарию. А вот в конструкторе синглетона Boolean(Singleton) вернет true, потому, что он уже существует. Довольно неочевидное явление ![]()
__________________
hauts.ru |
|
|||||
|
lubko, Просто не делайте так, и не возникнет таких вопросов.
Зачем вам в одном классе статические переменные класса, поля объекта и геттеры? Создайте один класс с данными, и напичкайте его статическими данными, и потом обращайтесь в синглтоне к нему. Зачем так всё путать.
__________________
adobe AS3 manual |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|