powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Переменные класса.
10 сообщений из 10, страница 1 из 1
Переменные класса.
    #35407989
dwarfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Я озаботился созданием в Cache паттерна Singleton и был весьма огорчён, когда не смог
сообразить как в классе описать статическую переменную класса.
И еще грустно, что видимо нельзя сделать "конструктор" класса %New() private.

Вроде методы класса есть а переменных класса нет. Как-то это все странно.
Я чего-то не понимаю?

Спасибо.
...
Рейтинг: 0 / 0
Переменные класса.
    #35408021
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант есть параметры класса... Там правда свои особенности есть...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Переменные класса.
    #35408067
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем статическая переменная класса отличается от локальной или глобальной переменной?
...
Рейтинг: 0 / 0
Переменные класса.
    #35408109
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какминимум синтаксисом при обращении к ней. Да и обращение к произвольному глобалу (тем паче к локальной переменной) из вне сильно отличается от работы с классами.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Переменные класса.
    #35408134
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, можно сделать обычную функцию класса, которая проверяет существование переменной и ее инициализацию, и если не ага, то сделает и ее вернет.
...
Рейтинг: 0 / 0
Переменные класса.
    #35408158
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору... Как вариант сделать вот такой метод класса

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
/// Типа переменная класса
ClassMethod Value(Name As %String, Value As %String) As %String
{
	s data=$na(^Value("имя_класса"))
	q:'$d(Value) $g(@data(@Name))
	s @data@(Name)=Value
	q:$q ""
	q
}
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Переменные класса.
    #35408168
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант можете сделать так:

Class TEST.Singleton Extends %RegisteredObject
{
ClassMethod getInstance() As %RegisteredObject
{
s obj = $G(%singleton(..%ClassName(1)))
if obj{
q $zobjref(obj)
}
s instance = ##class(TEST.Singleton).%New()
s %singleton(..%ClassName(1)) = +instance
q instance
}
}

это работает ТОЛЬКО в рамках ОДНОГО процесса
...
Рейтинг: 0 / 0
Переменные класса.
    #35408398
dwarfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=Dimon=Как вариант можете сделать так:

Class TEST.Singleton Extends %RegisteredObject
{
ClassMethod getInstance() As %RegisteredObject
{
s obj = $G(%singleton(..%ClassName(1)))
if obj{
q $zobjref(obj)
}
s instance = ##class(TEST.Singleton).%New()
s %singleton(..%ClassName(1)) = +instance
q instance
}
}

это работает ТОЛЬКО в рамках ОДНОГО процесса

+1
И такая задача - работать в рамках одного процесса!
Очень похоже на правду. Попробую так.
Правда запретить сделать извне s my_signleton = ##class(TEST.Singleton).%New() похоже не выйдет.
Ну не страшно. На уровне конвенций можно работать. Спасибо!!!
Спасибо всем откликнувшимся!
...
Рейтинг: 0 / 0
Переменные класса.
    #35408402
dwarfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaКак вариант есть параметры класса... Там правда свои особенности есть...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
К сожалению это константы ...
...
Рейтинг: 0 / 0
Переменные класса.
    #35408896
dwarfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яВ принципе, можно сделать обычную функцию класса, которая проверяет существование переменной и ее инициализацию, и если не ага, то сделает и ее вернет.
Хотелось-бы чтобы эта переменная была доступна только из этого-же класса. Т.е. была private.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Переменные класса.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]