powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как обратиться к методу класса из другой области?
13 сообщений из 13, страница 1 из 1
Как обратиться к методу класса из другой области?
    #37722442
Denis S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.

Как обратиться к методу класса, расположенного в другой области?
Например:

TEMP>do ##class(CObj.Container).FDemand("FFFF3344")

DO ##CLASS(CObj.Container).FDemand("FFFF3344")
^
<CLASS DOES NOT EXIST> *CObj.Container

Класс CObj.Container находится в другой области.

С глобалами такое возмножно:
TEMP>set ^["WORK"]GlobName("aa")="44",
а с классами можно работать подобным образом?
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722446
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если непосредственно перед вызовом метода сменить область, а затем восстановить исходную?
Код: html
1.
2.
3.
zn "другая область"
DO ##CLASS(CObj.Container).FDemand("FFFF3344")
zn "temp"
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722448
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще можно текущую область (до вызова метода) "запомнить" в переменную : set ns = $znspace
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722452
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мы обычно так и делаем (переход в другую область, выполнение и возврат).
Учтите, данные будут тоже в другой области.
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722462
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот кусок работающего кода:
set ns = $namespace
set $namespace = namespaceAgp
$$$QuitOnError(##class(ext.Synchronization).Save(%this))
set $namespace = ns
quit $$$OK
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722471
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
м-да, работающий косяк :(, надо в область вовремя вернуться:
set ns = $namespace
set $namespace = namespaceAgp
set sc = ##class(ext.Synchronization).Save(%this) // в другой области
set $namespace = ns
$$$QuitOnError(sc)
quit $$$OK
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37722693
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, есть возможность "ньючить" $namespace, что может помочь распрямить код и перестать бояться не вернуться "домой". Т.е., в примере от ser_shu:
Код: sql
1.
2.
3.
4.
5.
myfun() 
  new $namespace
  set $namespace = namespaceAgp
  $$$QuitOnError(##class(ext.Synchronization).Save(%this))
  quit $$$OK
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37723351
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovКстати, есть возможность "ньючить" $namespace, что может помочь распрямить код и перестать бояться не вернуться "домой".Красивая фича, но мозги снесет. Сразу мерещится procedureblock с заньюенными системными переменными. Кошмарных снов.
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37723449
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shu,

а в чём кошмар? New системной переменной ничем отличается от new публичной переменной...
Просто сама переменная относительно новая, как-то тихо появилась. Что касается более старых, то "new $ecode" уже второе десятилетие используется ))
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37723458
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имел в виду "new $etrap", конечно.
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37724493
Denis S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переход в другой namespace и обратно занимает много времени.
Проверял на работе с глобалами, поэтому и не хочется менять область, а желательно именно вызывать из другой области.
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37724682
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis S.Переход в другой namespace и обратно занимает много времени.
Проверял на работе с глобалами
вот тут поподробней, как проверяли, не совсем понятно ?
...
Рейтинг: 0 / 0
Как обратиться к методу класса из другой области?
    #37726197
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis S.Переход в другой namespace и обратно занимает много времени.
Проверял на работе с глобалами, поэтому и не хочется менять область, а желательно именно вызывать из другой области. Отображение пакетов

Faster Namespace Activation
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как обратиться к методу класса из другой области?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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