Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как вызвать Method из кода, или терминала? / 16 сообщений из 16, страница 1 из 1
28.04.2014, 08:08
    #38627320
Reliza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
Допустим, есть объявление какого-то класса, где есть, методы класса ClassMethod и Method.
ClassMethod вызывается из кода и терминала:

do ##class(Test.Item).SomeMethod()

,подскажите, как вызывается обычный Method?
...
Рейтинг: 0 / 0
28.04.2014, 08:11
    #38627321
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
Method это уже метод самого объекта этого класса. Поэтому его нужно сначала открыть или создать.

Код: plaintext
1.
Set obj=##class(Test.Item).%New()
Do obj.Method()
...
Рейтинг: 0 / 0
28.04.2014, 08:24
    #38627326
Reliza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
DAiMor,

Спасибо! Подскажите, а можно ли как-нибудь получить доступ к вызывающему объекту внутри метода?
Допустим метод определен так:Method SomeMethod()  As Test.Item
{
    // ...
    q result
}Т.е. нужно вернуть вызывающий объект в качество результата, или если нужно использовать вызывающий объект внутри метода.
...
Рейтинг: 0 / 0
28.04.2014, 08:43
    #38627334
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
Вам бы почтать документацию, или книжку.

в методе объекта можно обращаться к любым свойствам вызванного объекта и вызывать другие методы указав перед их именем 2 точки. Дляя того чтобы вернуть самого себя есть переменная %this либо ##this

Код: plaintext
Method SomeMethod() 
{
  w ..Name
  D ..OtherMethod()
  Quit %this
}
...
Рейтинг: 0 / 0
28.04.2014, 10:00
    #38627406
ser_shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
DAiMor...
Quit %this
...
В последних версиях рекомендуется использовать $this (%this - устаревшая конструкция).
...
Рейтинг: 0 / 0
28.04.2014, 10:07
    #38627420
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
ser_shuDAiMor...
Quit %this
...
В последних версиях рекомендуется использовать $this (%this - устаревшая конструкция).с $this, у меня как-то была засада, передавался не объект а имя класса этого объекта, это было неожиданно.
...
Рейтинг: 0 / 0
28.04.2014, 10:18
    #38627433
ser_shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
DAiMorser_shuпропущено...
В последних версиях рекомендуется использовать $this (%this - устаревшая конструкция).с $this, у меня как-то была засада, передавался не объект а имя класса этого объекта, это было неожиданно.У меня наоборот, при переходе с 2008 на 2010 и 2012 %this подбрасывала странностей, пришлось всё переписать на $this.
...
Рейтинг: 0 / 0
28.04.2014, 10:20
    #38627435
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
ser_shuУ меня наоборот, при переходе с 2008 на 2010 и 2012 %this подбрасывала странностей, пришлось всё переписать на $this.А мы переделывали ##this на %this
...
Рейтинг: 0 / 0
28.04.2014, 10:25
    #38627446
ser_shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
DAiMorser_shuУ меня наоборот, при переходе с 2008 на 2010 и 2012 %this подбрасывала странностей, пришлось всё переписать на $this.А мы переделывали ##this на %this##this это макрос, до 2010 он был %this, после стал $this.

Но у меня проблем с $this не было.
...
Рейтинг: 0 / 0
28.04.2014, 11:43
    #38627559
Reliza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
Использую, ##this - все ок. Чтобы не создавать еще одну тему, спрошу здесь.
Обязательно ли удалять(kill) объекты и переменные, созданные командой set?
Или можно не использовать kill, все удалится само после выхода из области видимости метода?
...
Рейтинг: 0 / 0
28.04.2014, 11:47
    #38627571
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
RelizaИспользую, ##this - все ок. Чтобы не создавать еще одну тему, спрошу здесь.
Обязательно ли удалять(kill) объекты и переменные, созданные командой set?
Или можно не использовать kill, все удалится само после выхода из области видимости метода?В большинстве случаев, это не требуется, но это легко проверить, выполнив безаргументный zwrite, который покажет все доступные локальные переменные.
если в классе или в методе отключить параметр ProcedureBlock, то тогда нужно будет их чистить, потому как они останутся.
...
Рейтинг: 0 / 0
28.04.2014, 13:14
    #38627677
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
RelizaОбязательно ли удалять(kill) объекты и переменные, созданные командой set?Без кила имел проблемы при смене областей...
Т.е. зашел в процедурку/метод, сменил область, поработал с объектами, сменил область, вышел. Переменные-то пропали... А вот объекты остались кагбэ открытыми...
Теперь всегда киляю.
...
Рейтинг: 0 / 0
28.04.2014, 13:55
    #38627723
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
ser_shu##this это макросСинтаксически это директива препроцессора. Макрос начинается на $$$.
...
Рейтинг: 0 / 0
28.04.2014, 14:37
    #38627765
Petr0vi4444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
DAiMorс $this, у меня как-то была засада, передавался не объект а имя класса этого объекта, это было неожиданно.В методах класса так и работает.
...
Рейтинг: 0 / 0
29.04.2014, 10:03
    #38628486
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
...
Рейтинг: 0 / 0
29.04.2014, 10:23
    #38628503
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать Method из кода, или терминала?
RelizaОбязательно ли удалять(kill) объекты и переменные, созданные командой set?
Или можно не использовать kill, все удалится само после выхода из области видимости метода? 15206965
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как вызвать Method из кода, или терминала? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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