Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / #super в generator-методах / 6 сообщений из 6, страница 1 из 1
11.11.2010, 12:08
    #36949100
cache hit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
Как вызвать базовый метод-генератор?
Конкретно делаю вот что: наследовал свой класс от %String дописываю IsValid и хочу что-то вроде:
Код: plaintext
1.
2.
3.
D %code.Write("S sc = "),##super
D %code.Write("If $$$ISERR(sc) = ...")
...
...
Рейтинг: 0 / 0
11.11.2010, 15:22
    #36949706
П.С.М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
InterSystems##super Syntax
Suppose that a subclass method overrides a superclass method. From within the subclass method, you can use the ##super() syntax to invoke the overridden superclass method.
Note:
##super is case sensitive and must be in all lowercase.
For example, suppose that the class MyClass.Down extends MyClass.Up and overrides the Simple class method. If the code for MyClass.Up.Simple is:

ClassMethod Simple()
{
Write "Superclass.",!
}

and the code for MyClass.Down.Simple is:

ClassMethod Simple()
{
Write "Subclass.",!
Do ##super()
}

then the output for subclass method, MyClass.Down.Simple, is:

>Do ##Class(MyClass.Down).Simple()
Subclass.
Superclass.
>
...
Рейтинг: 0 / 0
12.11.2010, 05:24
    #36950764
cache hit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
П.С.М.,

мне нужно вызвать ##super у генератора в compile-time, вопрос как?

Неужели единственное решение - копипаст реализации из базового класса?
...
Рейтинг: 0 / 0
12.11.2010, 10:00
    #36950976
newbie'
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
cache hit,
%XML.DataSet.cls(%OnNew+30)
Код: plaintext
$$$GENERATE(" Quit ##super(.initvalue)")
...
Рейтинг: 0 / 0
12.11.2010, 13:27
    #36951605
cache hit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
newbie',

вызов произойдет в run-time, нето
...
Рейтинг: 0 / 0
21.11.2010, 23:11
    #36968697
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#super в generator-методах
cache hitмне нужно вызвать ##super у генератора в compile-time, вопрос как?
Предположу, что использование "объектности" для генераторов в compile-time несколько ограничено.

cache hitНеужели единственное решение - копипаст реализации из базового класса?
Похоже, что так. Достаточно взглянуть, например, на код IsValid класса %TinyInt , который наследован от класса %Integer .
Или используйте методы не генераторы, но в этом случае Вы можете потерять в производительности в run-time.

PS: для других случаев Вам могут пригодиться директивы препроцессоа: ##expression и ##function , которые выполняют некий COS-код/COS-функцию во время компиляции.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / #super в generator-методах / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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