Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
21.11.2014, 12:57
|
|||
---|---|---|---|
|
|||
Начальное значение для типа данных |
|||
#18+
Доброго времени суток У меня в проекте во многих местах используется текущее время создания экземпляра класса:Property Created As %TimeStamp [ InitialExpression = {$zdatetime($horolog,3,1)} ]; Возможно ли создать собственный класс, наследованный от %Timestamp так, чтобы при создании экземпляра класса у него было значение по умолчанию? Скажем, так:Class Sys.CurrentTimeStamp Extends %TimeStamp { Method %OnNew(pValue As %Library.String = "") As %Status { Set %this = $zdatetime($horolog,3,1) } } Только так почему-то не работает =(( P.S. Новичок в Cache ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.11.2014, 13:48
|
|||
---|---|---|---|
Начальное значение для типа данных |
|||
#18+
konstantin_11У меня в проекте во многих местах используется текущее время создания экземпляра класса:Property Created As %TimeStamp [ InitialExpression = {$zdatetime($horolog,3,1)} ]; Возможно ли создать собственный класс, наследованный от %Timestamp так, чтобы при создании экземпляра класса у него было значение по умолчанию? Как вариант, сделай абстрактный класс с таким свойством... В остальных классах добавляй его к "родительскому" списку классов, типа такого... /// tm Class tmp.tm [ Abstract ] { Property Created As %TimeStamp [ InitialExpression = {$zdatetime($horolog,3,1)} ]; } /// dat Class tmp.dat Extends (%Persistent, tmp.tm) { Property name As %String; } ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.11.2014, 17:01
|
|||
---|---|---|---|
|
|||
Начальное значение для типа данных |
|||
#18+
Я подумал, что есть и другой вариант - написать функцию, возвращающую нужное мне значение:CurrentTimestamp() PUBLIC { Quit $zdatetime( $SYSTEM.SYS.TimeStamp(), 3, 1 ) }а потом ее применить:Class User.Probe Extends %Persistent { Property Dummy As %String; Property Created As %TimeStamp [ InitialExpression = {CurrentTimeStamp} ]; }Но и это мне не помогло. Компилируется вышеуказанный код без ошибок, однако при попытке добавить запись в таблицу возникает ошибка: Код: plaintext
Подскажите, пожалуйста, что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.11.2014, 17:42
|
|||
---|---|---|---|
Начальное значение для типа данных |
|||
#18+
konstantin_11Подскажите, пожалуйста, что я делаю не так?Много чего:
... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2014, 07:23
|
|||
---|---|---|---|
|
|||
Начальное значение для типа данных |
|||
#18+
servitМного чего: CurrentTimestamp ≠ CurrentTimeStamp в InitialExpression неправильно вызываете функцию CurrentTimeStamp О, благодарю! заработало в таком виде:Property Created As %TimeStamp [ InitialExpression = {$$CurrentTimeStamp^Lib()} ]; Причем Lib - это имя файла Lib.MAC, а не имя программы, прописанное в этом файле. А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2014, 21:35
|
|||
---|---|---|---|
Начальное значение для типа данных |
|||
#18+
konstantin_11А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно? Ты на русский язык такое сможешь перевести? Тип данных (строка, чисто, дата, время) ну никак не может иметь начального значения... Начальное значение (применительно к классам) может иметь свойство некоего типа... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2014, 05:24
|
|||
---|---|---|---|
|
|||
Начальное значение для типа данных |
|||
#18+
krvsa, ответ не по существу, в дальнейшем подобных ответов прошу не давать. я сишный программер, и класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение! ну а то, что тип данных может иметь методы обработки вас, видимо, не смущает. на этом и закончим. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2014, 09:25
|
|||
---|---|---|---|
Начальное значение для типа данных |
|||
#18+
konstantin_11А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно?Нет. В Caché классы типов данных отличаются по назначению и функционалу от классов объектов:konstantin_11класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение!В Caché тоже, но это будет класс объектов ( %RegisteredObject ), а не класс типов данных ( %DataType ). konstantin_11ну а то, что тип данных может иметь методы обработки вас, видимо, не смущаетВ Caché тоже класс типа данных имеет строго обозначенный набор методов обработки: Data Types и метода %OnNew() в нём нет, зато он есть в классе объектов, поэтому то Ваш первый пример и не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2014, 09:47
|
|||
---|---|---|---|
Начальное значение для типа данных |
|||
#18+
konstantin_11я сишный программер, и класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение! Полям - запросто! Но не типам, как ты писал ранее... Т.ч. и как сишный программер ты видать неочень... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=39&mobile=1&tid=1556765]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 432ms |
0 / 0 |