Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Имена методов зависят от регистра? / 12 сообщений из 12, страница 1 из 1
14.05.2012, 15:49
    #37793431
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
Всегда думал, что да. Это кажется логичным, т.к. ИмяМетода компилируется в *.INT и *.OBJ-коде в метку zИмяМетода , а имена меток в COS регистрозависимы. Об этом и в документации есть:
ДокументацияCase Sensitivity
Some parts of ObjectScript are case-sensitive while others are not. Generally speaking, the user-definable parts of ObjectScript are case-sensitive while keywords are not:
Case-sensitive: local variable names, process-private global names, global names, variable subscript names, class names, method names , property names, routine names, macro names, label names, lock names, passwords, Embedded SQL host variable names, Embedded SQL marker strings.
...Однако сегодня меня "носом ткнули": оказывается, если в классе определены методы с именами, совпадающими с точностью до регистра, Cache выдаёт ошибку при компиляции $$$ElementSameNameInCase (5117). Проверено в Cache 2010.1.4 и в 2011.1.4.
Как думаете, коллеги, это бага или фича?
...
Рейтинг: 0 / 0
14.05.2012, 15:53
    #37793438
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
Alexey MaslovКак думаете, коллеги, это бага или фича?
SQL...
Т.к. именно там я и натолкнулся на что-то подобное. Регистр был разный, а там на регистр не смотрят...
...
Рейтинг: 0 / 0
14.05.2012, 15:55
    #37793442
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
Отвечу сам себе:Док-яClass Names
All identifiers related to classes (class names, property names, method names, etc.) are case-sensitive. For purposes of uniqueness, however, such names are considered to be not case-sensitive; that is, two class names cannot differ by case alone. Т.е. независимость от регистра односторонняя:нельзя вызвать метод, допустив ошибку в регистре его имени
и в то же время имена методов не должны отличаться только регистром

Это касается не только методов, но и прочих элементов определения класса,
...
Рейтинг: 0 / 0
14.05.2012, 16:00
    #37793455
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
krvsa,

Да, похоже причина в этом. Но фича проявляется в любых классах, а не только в %Persistent. Видимо, правило сделали общим для всех классов (а не только для хранимых) для упрощения реализации.
...
Рейтинг: 0 / 0
14.05.2012, 16:02
    #37793460
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
Alexey MaslovВидимо, правило сделали общим для всех классов (а не только для хранимых) для упрощения реализации.
Наверное...
Я просто сразу сделал для себя оргвыводы и проблем больше не имел...
...
Рейтинг: 0 / 0
16.05.2012, 21:13
    #37797830
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
код который мне приходится поддерживать, по какой то уже неизвестной далекой причине содержит методы с одинаковым именем но имеет различия в регистре, для того чтобы код компилировался используем специальный флаг в одном из системных глобалов, сейчас не скажу, потому как в отпуске, вернусь в понедельник, напишу.
на деле конечно нужно от этого избавиться но пока как то руки не доходят.
...
Рейтинг: 0 / 0
16.05.2012, 21:49
    #37797855
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
http://docs.intersystems.com/cache20121/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_classes#GOBJ_classes_idrules]General Identifier Rules for Classes and Class Members Цитата из документацииIdentifiers preserve case: you must exactly match the case of a name; at the same time, two classes cannot have names that differ only in case. For example, the identifiers “id1” and “ID1” are considered identical for purposes of uniqueness.
...
Рейтинг: 0 / 0
16.05.2012, 21:58
    #37797858
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
...
Рейтинг: 0 / 0
16.05.2012, 23:37
    #37797951
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
servit,
спасибо, но разве здесь 12551073 не то же самое сказано, только другими словами?

DAiMor,
мы к счастью лишь недавно (буквально на днях) наступили на эти грабли, и подавили болезнь в зародыше :)
...
Рейтинг: 0 / 0
17.05.2012, 08:45
    #37798160
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
Alexey Maslov ,

То же самое.
Это было скорее в копилку ссылок по теме.
...
Рейтинг: 0 / 0
21.05.2012, 12:07
    #37803577
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
как и обещал флаг который дает возможность компилить код с разным регистром методов
s ^%qCacheObjectSys("strictchecking")=0
...
Рейтинг: 0 / 0
21.05.2012, 12:17
    #37803598
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имена методов зависят от регистра?
В дополнение к сказанному DAiMor : Class Member Naming Checks Made More Strict
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Имена методов зависят от регистра? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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