|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
Вот скажем, есть функция, которая получает в качестве аргумента имя глобала. Method createGlobal(globalName As %String) { set ^(globalName)("test") = 1 }Как создать глобал с именемем указанным в globalName? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 20:59 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
В вашем примере правильный синтаксис:Method createGlobal(globalName As %String) { set @$name(globalName)@("test") = 1 }Надеюсь, что это лишь пример, и вы не будете дёргать подобную функцию для создания каждого узла глобала? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 21:27 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
s globalName="test" s globalName="^"_globalName s @globalName=1 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 21:30 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
Alexey Maslovчто это лишь пример, и вы не будете дёргать подобную функцию для создания каждого узла глобала? Мне нужен способ благодаря которому я смогу работать с глобалом зная его имя с помощью переменной globalName. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 21:36 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
Valeriu s @globalName=1 Спасибо, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 21:36 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
А как можно записать куда-нибудь узлы (типа в array или $lb) и потом по этим узлам установить значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 21:37 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoder, Я согласен, что вы мало чему научитесь если будете спрашивать ответов по-крупинке и не пробуя найти эти ответы в документации. Я знаю как много знающих людей на этом форуме, но их надо заинтересовать более весомыми вопросами. Мой ответ вам читайте здесь: http://www.mumps.cz/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_vzreference Это общий ответ не зная на какой версии вы работаете. Знающим и активным форумчанам предлагаю начать отдельную тему для учащихся. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 22:52 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoder, Тут Евгений Каратаев недавно ссылку на свою книгу выкладывал. Читайте: 17272466 , раздел косвенность и про функцию $name не забудьте посмотреть. jxcoderА как можно записать куда-нибудь узлы (типа в array или $lb) Почитайте про команды set и merge, про функцию $piece (особенно об особенностях использования функции в левой и правой части выражения). Также, почитайте про функции $order, $data, $get. Думаю этого, пока, будет достаточно. P.S.: Голые ссылки не используйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 23:34 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
П.С.М., что-то так и не понял как ее использовать в этой задаче. Можете еще намекнуть или примерчик какой-нибудь написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2015, 19:02 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoderчто-то так и не понял как ее использовать в этой задаче. В какой конкретной задаче? В этой 17372568 ? Если честно, то из описания, не совсем понятно чего Вы хотите. Если хотите из элементов какого-либо списка сделать узлы какой-либо индексной переменной, то $lb или $p Вам в помощь. Например: через $piece ;============================================================================= ; Тест ;============================================================================= TEST N i,list,dlm,len,node,data D INIT F i=1:1:len { S node=$P(list,dlm,i) I node'="" { W !,"Input data for "_node,! R data S array(node)=data } } W !!,"Content of array:",! ZW array Q ;============================================================================= ; Тестовый список узлов через разделитель ;============================================================================= INIT S dlm="|" S $P(list,dlm,1)="node1" S $P(list,dlm,2)="node2" S $P(list,dlm,3)="node3" S len=$L(list,dlm) Q ;============================================================================= с использование списков ;============================================================================= ; Тест ;============================================================================= TEST N i,list,len,node,data D INIT F i=1:1:len { S node=$LG(list,i) I node'="" { W !,"Input data for "_node,! R data S array(node)=data } } W !!,"Content of array:",! ZW array Q ;============================================================================= ; Тестовый список узлов в $list ;============================================================================= INIT S $LI(list,1)="node1" S $LI(list,2)="node2" S $LI(list,3)="node3" S len=$LL(list) Q ;============================================================================= Про array вообще не понятно. Раз у Вас уже есть какая-то индексная переменная, так и пройдитесь по её узлам да заполните нужными значениями. Например: ;============================================================================= ; Тест ;============================================================================= TEST N array,node,data D INIT S node="" F { S node=$O(array(node)) Q:node="" W !,"Input data for "_node,! R data S array(node)=data } W !!,"Content of array:",! ZW array Q ;============================================================================= ; Тестовый массив ;============================================================================= INIT S array("node1")="" S array("node2")="" S array("node3")="" Q ;============================================================================= ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2015, 22:22 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
П.С.М., У меня есть функция, которой передается на вход экземпляр класса A. У этого класса есть два наследника: AB, AC. Эти классы имеют различное сохранение данных в глобал. Скажем для AB надо сохранить данные так: Код: sql 1.
а для AC надо сохранить данные вот так: Код: sql 1. 2.
вот я и подумал, что было бы круто иметь ссылку на глобал или каким-то образом формировать список ключей и значений (массив) и потом пройтись по нему и записать данные в глобал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 06:25 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoderссылку на глобал Ссылка на глобал - есть строка с именем глобала [плюс может содержать не просто имя глобала, но и узлы]. НО!!! В ручную такую строку не формируйте, просто есть вероятность допустить ошибку, пользуйтесь функцией $NAME. jxcoderЭти классы имеют различное сохранение данных в глобал Позвольте поинтересоваться, а чем Вам не угодили разработки компании InterSystems, в частности класс %Persistent? Вам ведь придётся самому реализовывать методы работы с данными (запись/чтение/удаление/копирования из/в глобал), самому обеспечивать целостность данных, индексацию, и т.д. Т.е. Вам предстоит сделать работу, которая давно проделана за Вас. Или мы говорим не о классах Cache? jxcoderиметь ссылку на глобал или каким-то образом формировать список ключей и значений (массив) и потом пройтись по нему и записать данные в глобал. См. примеры выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 09:32 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
П.С.М., Я думаю, что пока не дошел до этой стадии. Мне пока проще работать с глобалами напрямую и самостоятельно реализовать функции сохранения и поиска.Method writeToGlobal(node As %String, ab As %AB) { set @node@("b", "field1") = ab.<значение поля field1> }Method writeToGlobal(node As %String, ac As %AC) { set @node@("b", "field2") = ac.<значение поля field2> set @node@("c", "status") = <значение поля status> }Вызов: writeToGlobal($name(^myglobal("a", "subtype")), ab)writeToGlobal($name(^myglobal("a", "subtype")), ac) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 19:13 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoderМне пока проще работать с глобалами напрямую и самостоятельно реализовать функции сохранения и поискаПроще потратить время на изучение стандартных возможностей из коробки, чем привыкать к такому стилю написания кода, а потом мучительно переучиваться и заодно переписывать код. Подавляющая часть Ваших вопросов решается настройкой схемы хранения : вполне можной обойтись стандартным %CacheStorage, а если его мало - %CacheSQLStorage или %CustomStorage. Работа с существующими глобалами через объекты и SQL Остались несколько вопросов по Вашей схеме:
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:42 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
servit, servitприведите структуру хранения для класса A Она различная для разных подклассов класса A. servitне заметил, где именно у Вас в структуре хранения фигурирует ID объекта конкретного класса? Данные хранятся в привычной манере: Код: sql 1. 2. 3. 4.
servitкаким образом Вы будете хранить/использовать индексы по Вашим полям для ускорения поиска? Еще не думал об этом. servitпредусматривается ли Вами в дальнейшем доступ к этим классам/данным через SQL? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 05:30 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
jxcoderservitприведите структуру хранения для класса AОна различная для разных подклассов класса A.Это понятно, что у AB и AC она различная, о чём Вы писали выше. Я спросил именно про класс A, но никак не про его потомков. Или он у Вас не хранится, т.е. - абстрактный? jxcoderservitне заметил, где именно у Вас в структуре хранения фигурирует ID объекта конкретного класса?Данные хранятся в привычной манере:Т.е. ID у Вас передаётся в writeToGlobal в самом node? Приведите, пожалуйста, полностью пример глобала с данными, например, для класса AB. Двух объектов (записей) будет достаточно.А то покаjxcoderMethod writeToGlobal(node As %String, ac As %AC) { set @node@( "b" , "field2") = ac.<значение поля field2> set @node@("c", "status") = < значение поля status> }не вяжется сjxcoderа для AC надо сохранить данные вот так: Код: sql 1. 2.
jxcoderservitкаким образом Вы будете хранить/использовать индексы по Вашим полям для ускорения поиска?Еще не думал об этом.Если данные предполагается не просто хранить мёртвым грузом, но и обрабатывать, и их ожидается много, то лучше озаботиться этим сейчас, чем потом. Потом это может быть и наверняка будет "дороже" . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 09:31 |
|
Как создать глобал с заданным именем?
|
|||
---|---|---|---|
#18+
servit, servitЯ спросил именно про класс A, но никак не про его потомков. Или он у Вас не хранится, т.е. - абстрактный Класс A действительно абстрактный. servitТ.е. ID у Вас передаётся в writeToGlobal в самом node? Да, передается в node . Я пытаюсь реализовать свою идею сохранения JSON данных в Cache, так как реализация, предоставляемая InterSystems меня не устраивает. Мне нужно нечто большее, чем дает готовая реализация. Общая идея сохранения JSON: JSON в Cache? servitЕсли данные предполагается не просто хранить мёртвым грузом, но и обрабатывать, и их ожидается много, то лучше озаботиться этим сейчас, чем потом. Потом это может быть и наверняка будет "дороже" . Это да, но я пока не придумал механизма индексирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 11:11 |
|
|
start [/forum/topic.php?fid=39&msg=38903180&tid=1556704]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 276ms |
total: | 406ms |
0 / 0 |