powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Property ByRef
9 сообщений из 9, страница 1 из 1
Property ByRef
    #38860477
konstantin_11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так для передачи локальных переменных по значению : do method(localVar)
Так для передачи локальных переменных по ссылке : do method(.localVar)
Так для передачи свойств объекта по значению : do method(..objectProperty)
Как в метод передать свойство объекта по ссылке?

Не пинайте сильно, если было уже - не нашел =/
...
Рейтинг: 0 / 0
Property ByRef
    #38860485
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свойство объекта можно передать только по значению, по ссылке никак.
...
Рейтинг: 0 / 0
Property ByRef
    #38860543
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstantin_11,

Не скажу, что такой способ может быть рекомендован, но теоретически можно так:Property StrProp As %String;

Method Run1()
{
  d ..Set(+%this,"StrProp")
  d ..Write(+%this,"StrProp")
  q
}

Method Set(obj, prop)
{
  x "s oref=$zobjref("_obj_") s oref."_prop_"=123"
  q
}

Method Write(obj, prop)
{
  x "s oref=$zobjref("_obj_") w oref."_prop_",!"
}
...
Рейтинг: 0 / 0
Property ByRef
    #38860578
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstantin_11Как в метод передать свойство объекта по ссылке?ДокументацияWhen passing by reference, the parameters must reference the name of a local variable or unsubscripted array in the form .name

источник , поэтому остаётся
  • либо передавать свойство объекта через локальную переменную
  • либо передавать сам объект по ссылке
...
Рейтинг: 0 / 0
Property ByRef
    #38860595
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitлибо передавать сам объект по ссылкеНо сам объект всегда передается по ссылке
...
Рейтинг: 0 / 0
Property ByRef
    #38860597
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яkonstantin_11,

Не скажу, что такой способ может быть рекомендован, но теоретически можно так:Property StrProp As %String;

Method Run1()
{
  d ..Set(+%this,"StrProp")
  d ..Write(+%this,"StrProp")
  q
}

Method Set(obj, prop)
{
  x "s oref=$zobjref("_obj_") s oref."_prop_"=123"
  q
}

Method Write(obj, prop)
{
  x "s oref=$zobjref("_obj_") w oref."_prop_",!"
}


а зачем делать +%this ?
даа, такой способ лучше не рекомендовать вообще
...
Рейтинг: 0 / 0
Property ByRef
    #38860603
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я x "s oref=$zobjref("_obj_") w oref."_prop_",!"
set $property(obj, prop) = value
...
Рейтинг: 0 / 0
Property ByRef
    #38860713
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Поведение не-MUMPS элементов языка в каше как-то сильно зависит от версии, тут гадать приходится под общий знаменатель разных версий. В каких-то то-то еще есть, в каких-то что-то уже есть, в каких-то чего-то уже нет и т.д.
...
Рейтинг: 0 / 0
Property ByRef
    #38860763
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorservitлибо передавать сам объект по ссылкеНо сам объект всегда передается по ссылкеСкорее "OREF'у (object reference) всё равно как его передают: по ссылке или по значению".
Тогда так:servitлибо передавать саму ссылку на объект ( OREF ): в "чистом" виде, в виде строки или числа.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Property ByRef
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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