powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Индекс на x__classname
41 сообщений из 41, показаны все 2 страниц
Индекс на x__classname
    #39698302
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать Primary Key на classname + Number в этой задаче?

- есть один базовый класс Base, у него есть свойство Number
- все остальные классы произведены от базового, Number уникален для каждого конечного класса, таким образом (classname,Number) уникален для таблицы Base

Служебное поле x__classname я так понимаю нельзя использовать
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698483
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать вычисляемое поле и на него навесить индекс.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698538
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут один момент не догоняю, который возможно делает мой вопрос бесмысленным:

если классы B и С произведены от класса A, и я делаю 'select * from C', каким образом каше находит все объекты типа C? У него же нет индекса по classname. Он, что перебирает все A и откидывает все не-С? Но это же супер как неэффективно.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698569
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo,

А план запроса не пробовал смотреть?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698600
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще создание Extent индекса для каждого подкласса должно решать проблему перебора всех объектов при поиске по подклассам.
Либо делать свое хранение в каждом подклассе.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698606
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, да, это я ступил. Конечно в Data-глобале классы идут как под-глобали.

Тогда обратно к моему вопросу, уточню его: как сделать IdKey таким?

Index key On (classname,Number) [ IdKey, PrimaryKey, Unique ];
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698612
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alataloа, да, это я ступил. Конечно в Data-глобале классы идут как под-глобали.

Тогда обратно к моему вопросу, уточню его: как сделать IdKey таким?

Index key On (classname,Number) [ IdKey, PrimaryKey, Unique ];И думаешь, этот индекс автоматически начнет использоваться? Почему?

Напиши пример запроса, который думаешь что так оптимизируешь?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698744
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, не, речь не про оптимизицию. Все проще, у меня каждый объект идентифицируется парой classname+Number и я хочу иметь возможность сказать ##class(classC).%OpenId("classC||10"), но не знаю как сказать Cache что IdKey это classname+Number
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39698756
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alataloне, не, речь не про оптимизицию. Все проще, у меня каждый объект идентифицируется парой classname+Number и я хочу иметь возможность сказать ##class(classC).%OpenId("classC||10"), но не знаю как сказать Cache что IdKey это classname+NumberХм, что-то еще запутанней становится. Number уникален в пределах класса, а зачем делать индекс по классу и Number если должно быть достаточно только Number.
По индексам типа Unique можно открывать объекты без %OpenId.
так генерятся методы IndexName с приставками Open, Exist. Куда нужно передать список значений полей по которым этот индекс.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39699266
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда для каждого производного класса нужно отдельно делать свой Number и уникальный индекс по нему. Моя же идея простая как топор - Number определяется один раз в базовом классе и IdKey определяется как classname+Number. Тогда Data глобаль будет выгдядеть как

classB
Number1 (...record data)
Number2 (...record data)

classC
Number1 (...record data)
Number2 (...record data)
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39701627
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo, соглашусь daimor в этой теме, или krvsa в соседней теме - вы делаете что-то не то ( недоговариваете )
Код: vbnet
1.
2.
3.
4.
5.
6.
Class alatalo.baseA Extends %Persistent [ Abstract ] {
Property number;
Index number On number [ Unique ];
}
Class alatalo.baseB Extends (%Persistent, baseA) {}
Class alatalo.baseC Extends (%Persistent, baseA) {}


У %Persistent уже есть метод %Open( oid ), где oid = $lb( id, classname ) - если не подходит, напишите свой
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39701939
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

неа, так select по baseA не сделать
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39702650
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo, тут такое дело...

Наследование это же из ООП, мол, классB ( наследник ) такой же как классA ( родитель ), но поведение другое, так?
А у нас тут ООП с хранением - хранится состояние ( значения свойств ), а не поведение.
Также следует помнить, что это СУБД, что предполагает обработку множеств записей для множества пользователей.
Объектный доступ имеет свою цену ( память, скорость ), что рано или поздно, подтолкнет вас к необходимости все чаще использовать класс-методы ( хранимые процедуры ). А им, кроме идентификаторов, мало что нужно.
И в конце этого длинного пути, вы начнете предпочитать простые схемы хранения - таблицы, которые будете обрабатывать разным набором функций ( класс-методы, хранимки ).
Конечно, все эти предпочтения зависят от ваших обстоятельств, но вы их не раскрываете.

Возвращаясь к вашему вопросу:
1. C одинаковым интерфейсом вроде разобрались - абстрактный класс
2. С общим списком - в базовом классе можно написать ( или генерировать ) запрос объединяющим строки наследников
Код: plsql
1.
2.
3.
4.
5.
Select oid, number From ( 
 Select $listbuild(id,'pkg.baseB') as oid, number From pkg.baseB 
 Union 
 Select $listbuild(id,'pkg.baseC') as oid, number From pkg.baseC 
) 


и потом
Код: vbnet
1.
s obj = ##class(%Persistent).%Open(oid)


3. Уникальность номера между всеми экземплярами наследников проверять в момент сохранения - метод, создающий и использующий идексноподобную глобаль, вам в помощь
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39702658
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4. И чтоб совсем соответствовать, запрос из п.2 объявить как view
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703230
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>... но вы их не раскрываете.
Именно. Вопрос этого топика - можно ли уговорить Каше использовать x__classname в Primary Key, т.е. получить такую структуру Data Global:

^data("classB",1)=...
^data("classB",2)=...
^data("classB",n)=...

^data("classС",1)=...
^data("classС",2)=...
^data("classС",n)=...

Зачем и не лучше ли использовать хранимки отстается за скобками
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703266
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo, x__classname - служебное поле, с информацией о цепочке наследования. Вы не можете указать это поле при описании индекса. Если вам нужна определенная структура глобали, используйте другие схемы хранения ( Cache SQL Storage, Custom Storage ) вместо дефолтной ( Cache Storage )
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703416
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>x__classname - служебное поле, с информацией о цепочке наследования. Вы не можете указать это поле при описании индекса.
Спасибо, Кеп :)

>Если вам нужна определенная структура глобали...
Cамое важное здесь не структура глобали, а чтобы Каше сам знал что в первом индексе хранится classname и мог бы его использовать как extent index. Таким образом, запрос "select * from classB order by Number" может был выполнен эффективно без дополнительных индексов. Можно ли этого добиться с помощью альтернативных схем хранения?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703483
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo
>... x__classname - служебное поле, с информацией о цепочке наследования ...
>> Спасибо, Кеп :)
"Здесь мало услышать, Здесь вслушаться нужно..." alatalo... а чтобы Каше сам знал что в первом индексе хранится classname и мог бы ...
С помощью альтернативных схем хранения можно добиться поведения, которым не обладает схема хранения по умолчанию :)
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703511
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>С помощью альтернативных схем хранения можно добиться поведения, которым не обладает схема хранения по умолчанию :)
да ладно?! вот оно решение всем проблемам! :)

Можете привести пример такой схемы с Primary Key по classname+Number?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703539
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... решение всем проблемам ... Не могу разделить ваш оптимизм, ведь их список вы не раскрываете.
alatalo Можете привести пример такой схемы с Primary Key по classname+Number? Именно в такой постановке достаточно и стандартной схемы. Но ведь список ваших требований постоянно пополняется... Готовы предоставить полную спецификацию и ответить на уточняющие вопросы?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703646
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Готовы предоставить полную спецификацию
запросто:

Как сделать Primary Key на classname + Number в этой задаче?

- есть один базовый класс classA, у него есть свойство Number
- все остальные классы произведены от classA, Number уникален для каждого конечного класса, таким образом пара (classname,Number) уникален для всех объектов classA
- classA должен проецироваться как таблица доступная для 'select ... from classA'
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703705
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Number это если я правильно понимаю, ID идентификатор объекта.
Зачем вам индекс по classname+Number если вы и так можете открывать объект по ##class(classname).%OpenId(Number)

Если Number не Id а еще одно поле, то просто Unique индекс по нему и открывать через него
##class(classname).NumberIndexOpen(Number)

А индекс по Classname достигается через Extent индекс, его хватит чтобы sql запросы не перебирали все объекты classA
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703816
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... запросто ... Неа - вы не описали поле classname.
Если предположить, что это поле с именем класса, то решение может быть таким:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Class alatalo.baseA Extends %Persistent {
  Property classname [ InitialExpression = {$classname()}];
  Property Number;
  Index master On (classname, Number) [ PrimaryKey ];
}
Class alatalo.baseB Extends baseA{}
Class alatalo.baseC Extends baseA{}
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703880
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintalatalo ... запросто ... Неа - вы не описали поле classname.
Если предположить, что это поле с именем класса, то решение может быть таким:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Class alatalo.baseA Extends %Persistent {
  Property classname [ InitialExpression = {$classname()}];
  Property Number;
  Index master On (classname, Number) [ PrimaryKey ];
}
Class alatalo.baseB Extends baseA{}
Class alatalo.baseC Extends baseA{}


Только этот индекс не поможет в SQL запросе. Только если не искать фильтровать по классу в where. Но это будет выглядеть несколько нелепо.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703967
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMordoublefintпропущено...
Неа - вы не описали поле classname.
Если предположить, что это поле с именем класса, то решение может быть таким:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Class alatalo.baseA Extends %Persistent {
  Property classname [ InitialExpression = {$classname()}];
  Property Number;
  Index master On (classname, Number) [ PrimaryKey ];
}
Class alatalo.baseB Extends baseA{}
Class alatalo.baseC Extends baseA{}


Только этот индекс не поможет в SQL запросе. Только если не искать фильтровать по классу в where. Но это будет выглядеть несколько нелепо.

Да, именно так. Собственно весь вопрос этой темы в том, можно ли сообщить Каше, что classname (a.k.a x__classname, %%CLASSNAME) хранится в Primary Key. Таким образом, Primary Key будет одновременно и Extent индексом.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39703982
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Number уникален только в пределах одного конечного класса. Объект типа Tiger идентифицируется Number-ом, но если какой-то другой объект, Event Log например, ссылается на базовый класс Animal, то одного Number уже не достаточно.

>А индекс по Classname достигается через Extent индекс, его хватит чтобы sql запросы не перебирали все объекты classA
Да, но Extent индекс нужно будет завести для каждого конечного класса. В чем нет необходимости, если Classname будет содержаться в Primary Key
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704277
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor ... Только этот индекс не поможет в SQL запросе ... Так аlatalo и не просил этого, в его спецификации таких требований нет

alatalo ... что classname (a.k.a x__classname, %%CLASSNAME) ... Третий раз повторяю, обратите наконец внимание: classname '= x__classname !!!
classname - имя текущего класса , например "alatalo.baseB"
x__classname - ЦЕПОЧКА НАСЛЕДОВАНИЯ , например "~alatalo.baseA~alatalo.baseB~", служебное поле Cache, используется в системном методе %IsA
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704317
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alataloДа, именно так. Собственно весь вопрос этой темы в том, можно ли сообщить Каше, что classname (a.k.a x__classname, %%CLASSNAME) хранится в Primary Key. Таким образом, Primary Key будет одновременно и Extent индексом.Такое не получится сделать, да и смысл так делать пока все равно не ясен.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704387
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Третий раз повторяю...
Честно сказать, вы могли бы и в превый раз этого не говорить.

Мы не собираемся писать то, что я здесь называю classname, в Primary Index сами. Речь в этой теме про то, каким образом (и возможно ли это в принципе), сообщить Каше, что та "ЦЕПОЧКА НАСЛЕДОВАНИЯ", которую он подефолту пишет здесь:

Storage Default
{
<Value name="1">
<Value>%%CLASSNAME</Value>
...

находится в первом сабскрипте Primary Index.

Если это возможно, то 'select * from classB' может обойтись без перебора всей таблицы даже без Extent индекса
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704390
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

> да и смысл так делать пока все равно не ясен
смотри, у тебя 120 производных класса, зачем заводить 120 Extent индексов, если их роль может выполнить Primary Key?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704608
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... могли бы и в превый раз этого не говорить... 4. Цепочка наследования - служебное поле. Т.е предназначено и используется производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем. Его нельзя указать в качестве свойства при определении индекса. :)
alatalo %%CLASSNAME ...находится в первом сабскрипте ... Нет, %%CLASSNAME находится в первой позиции $lb().
Хранение по умолчанию ( Cache Storage ) хранит данные в формате ^package.classD(ID)=$lb(%%CLASNAME, props...).
Соответственно, реализация вашей идеи приведет к полному сканированию глобали.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704790
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>...Его нельзя указать в качестве свойства при определении индекса
очень возможно что нельзя, но я не вижу принципиальных препятсвий почему "служебное поле предназначенное и используемое производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем" может использоваться при определении хранения (%%CLASSNAME), но не может использоваться в индексе: его значение не меняется и известно на момент первой записи в базу.

>Нет, %%CLASSNAME находится в первой позиции $lb().
вы меня неправильно поняли: он там находится по умолчанию, но я хочу его в первый сабскрипт индекса

>Соответственно, реализация вашей идеи приведет к полному сканированию глобали
в каком сценарии?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705110
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo но я не вижу принципиальных препятствий Навскидку - совместимость и универсальность.
alatalo но я хочу его в первый сабскрипт индекса Если вам нужно другое поведение, то вы или заказываете его у производителя , или реализуете самостоятельно с помощью предоставленных производителем возможностей - собственные поля, индексы или альтернативные схемы хранения
alataloв каком сценарии? В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705194
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Навскидку - совместимость и универсальность.
очень вероятно, что какие-нибудь фундаментальные проблемы с этим действительное есть, но точно не с совместимостью и универсальностью, поскольку возможность писать classname еще и в индекс помимо его обычного места ни на что из перечисленного не влияет. Ровно тоже, что и с возможностью хранить в индексе копии обычных полей.

>Если вам нужно другое поведение, то вы или заказываете его у производителя, или реализуете самостоятельно с помощью предоставленных производителем возможностей
да ну?! еще один совершенно бесценный совет :)

>В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали
в каком сценарии (поиск объекта, чтение его полей etc) копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705334
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo возможность писать classname еще и в индекс помимо его обычного места, ни на что из перечисленного не влияет 6. classname не тоже самое, что и %%CLASSNAME
Предполагаемую глубину наследования вы не оговаривали.
Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные?
alatalo да ну?! Не благодарите. Наносить добро, причинять пользу :) Так какой путь выбираете - самостоятельно или в WRC?alatalo в каком сценарии копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"?7. %%CLASSNAME сборная строка с именами классов, т.е промежуточная информация, которую еще нужно обработать.
Поэтому в любом, в котором будет необходимость использовать такой индекс ( за исключением, пожалуй, запроса "найди все id, с такой же цепочкой наследования" )
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705369
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>classname не тоже самое, что и %%CLASSNAME
в этой теме classname=%%CLASSNAME=цепочка наследования

>Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные?
нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс

>Так какой путь выбираете - самостоятельно или в WRC?
вне темы

> запроса "найди все id, с такой же цепочкой наследования"
это единственный вид запроса, который меня интересует. Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705403
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... в этой теме classname=%%CLASSNAME=цепочка наследования ... давайте тогда называть его classeslist, что бы все таки отличать.alatalo нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс Уверены? alatalo Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно Приведете пример кода для function( classeslist, classname ){}?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705435
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>давайте тогда называть его classeslist, что бы все таки отличать
в этой теме я назыаю его classname

>Уверены?
Если вы можете записать ^a=$lb(classname, ...), то в чем проблема записать ^b=classname?

>Приведете пример кода для function( classeslist, classname ){}?
classnamePrev=classname-1 ; условно, формируем предыдущее значение classname
перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705489
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... в чем проблема записать ^b=classname? ... alatalo ... но я хочу его в первый сабскрипт индекса ... ???
Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль?

alatalo перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname alatalo ... Но даже если нужно искать инстансы промежуточного класса ... не менее эффективно ???
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39707113
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль?
как уже многократно повторялось: ^data(classname,number)=data ; $lb(classname,...)

>??
да, первым ордером попадаем сразу на первый промежуточный класс. Последущие перебираем до тех пор, пока classname начинается с искомой строки. Минимальные издержки, даже не учитывая, что в реальной системе очень ограниченное число классов
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39711841
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo,
classname еще и в индекс
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
ClassMethod test(){

	s inheritance = $lb(
		"Class.can.be.subclassed.to.a.depth.of50.but.not.further",
		"The.full.name.of.class.member.including.the.full.class.name.must.be.less.than.or.equal.to220.characters",
		"The.total.length.of.a.global.reference.is.limited.to511.encoded.characters",
		"If.you.must.have.long.subscript.or.global.names",
		"it.is.helpful.to.avoid.a.large.number.of.subscript.levels",
		"If.you.are.using.multiple.subscript.levels",
		"avoid.long.global.names.and.long.subscripts",
		"Because.you.may.not.be.able.to.control.the.character.sets.you.are.using",
		"it.is.useful.to.keep.global.names.and.subscripts.shorter"
	)
	#define isOk( %bool ) $case( %bool, 1:"OK. ",:"FAIL. " )
	s pointer = 0, class = "", ok = 1
	while $listnext( inheritance, pointer, class ){
		s valid = $system.OBJ.IsValidClassname( class )
		w !, $$$isOk( valid ), class
		s ok = ok && valid
	}
	
	w !, "Classes: ", $$$isOk( ok )
	s depth = $ll( inheritance ) w !, "Depth: ", depth
	s classes = "~" _ $lts( inheritance, "~" )_ "~" w !,"Length: ", $l( classes )
	s test = 1
	
	try {
		s data = $lb( classes, "нет здесь никакой проблемы", "точно не с совместимостью и универсальностью" )
		s ^alatolo.has.idea(classes, 1) = data
	} catch e {
		zw e s test = 0	
	}
	Q test
}

...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Индекс на x__classname
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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