|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
статик конструктор
Имеется класс А, который активно работает с тригонометрией.В целях оптимизации думаю вынести все значения тригонометрических функций в precalculated табличку.Хранить её думаю в статичном поле того же класса.Возникает вопрос где можно заполнять эту таблицу?Можно конечно это делать один раз при создании экземляра A.Но как-то оно кажется кривым т.к. табличка в будущем может понадобится другим классам.Есть ли более изящные методы?
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Цитата:
Можно, например, инициализировать переменные через паблик статик метод при запуске приложения. Или вообще захардкодить значения, чтобы не пришлось ничего вычислять. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Значения могут потребоваться еще ДО создания первого экземпляра А.Не хотелось бы что бы совершенно несвязанные классы зависили от создания чужих экземпляров.
Добавлено через 39 минут нужно нечто типа блока static {...} в жаве |
|
|||||
Поддерживаю, других наиболее уместных решений не вижу.
__________________
Я заклинаю вас действовать иначе. |
|
|||||
Modus ponens
|
Не знаю как сейчас, несколько лет назад можно было писать код статической инициализации после объявления package. Т.е. например так:
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
wvxvw,прокатило как раз то, что надо.Благодарю
|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
почему не кешировать значения по мере необходимости?
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
тоже вариант.Только нужен контроль за размерами таблички
|
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Аналог блока static в джаве это вызов static функции в месте определения static полей
package { public class F { public static const a:Vector.<int> = new Vector.<int>(); private static function b():void { for(var i:int = 0; i < 10; ++i) { a.push(i); } } b(); } } package { public class F { public static const c:Vector.<int> = function():Vector.<int> { var v:Vector.<int> = new Vector.<int>(); for(var i:int = 0; i < 10; ++i) { v.push(i); } return v; }(); } } Последний раз редактировалось Nooob; 06.11.2016 в 19:57. |
Часовой пояс GMT +4, время: 20:39. |
|
« Предыдущая тема | Следующая тема » |
|
|