|
Начальное значение для типа данных
|
|||
---|---|---|---|
#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, 12:57 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#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, 13:48 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#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:01 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
konstantin_11Подскажите, пожалуйста, что я делаю не так?Много чего:
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 17:42 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
servitМного чего: CurrentTimestamp ≠ CurrentTimeStamp в InitialExpression неправильно вызываете функцию CurrentTimeStamp О, благодарю! заработало в таком виде:Property Created As %TimeStamp [ InitialExpression = {$$CurrentTimeStamp^Lib()} ]; Причем Lib - это имя файла Lib.MAC, а не имя программы, прописанное в этом файле. А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2014, 07:23 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
konstantin_11А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно? Ты на русский язык такое сможешь перевести? Тип данных (строка, чисто, дата, время) ну никак не может иметь начального значения... Начальное значение (применительно к классам) может иметь свойство некоего типа... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2014, 21:35 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
krvsa, ответ не по существу, в дальнейшем подобных ответов прошу не давать. я сишный программер, и класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение! ну а то, что тип данных может иметь методы обработки вас, видимо, не смущает. на этом и закончим. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 05:24 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
konstantin_11А первый вариант с типом данных, имеющим начальное значение, как я понимаю, реализовать невозможно?Нет. В Caché классы типов данных отличаются по назначению и функционалу от классов объектов:konstantin_11класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение!В Caché тоже, но это будет класс объектов ( %RegisteredObject ), а не класс типов данных ( %DataType ). konstantin_11ну а то, что тип данных может иметь методы обработки вас, видимо, не смущаетВ Caché тоже класс типа данных имеет строго обозначенный набор методов обработки: Data Types и метода %OnNew() в нём нет, зато он есть в классе объектов, поэтому то Ваш первый пример и не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 09:25 |
|
Начальное значение для типа данных
|
|||
---|---|---|---|
#18+
konstantin_11я сишный программер, и класс в си может - сюрприз, сюрприз! - иметь конструктор, который в том числе может задавать полям класса начальное значение! Полям - запросто! Но не типам, как ты писал ранее... Т.ч. и как сишный программер ты видать неочень... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 09:47 |
|
|
start [/forum/topic.php?fid=39&msg=38814697&tid=1556765]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 289ms |
total: | 424ms |
0 / 0 |