Comments 8
Кроме того, проверка синтаксиса будет произведена только во время выполнения кода.Почему же? См. $xecute:
You can use the CheckSyntax() method of the %Library.Routine class to perform syntax checking on code.
0
Ну правильно. А CheckSyntax когда будет вызываться? Во время выполнения кода.
Можно, конечно, на этапе компиляции проверять, но тогда можно просто код генерировать objectgenerator'ом.
Речь шла о том, что когда вы метод пишете вам Студия и синтаксис подсветит и на ошибки укажет, а с $xecute сам следи, чтоб не ошибиться, кавычки на двойные менять нужно.
Можно, конечно, на этапе компиляции проверять, но тогда можно просто код генерировать objectgenerator'ом.
Речь шла о том, что когда вы метод пишете вам Студия и синтаксис подсветит и на ошибки укажет, а с $xecute сам следи, чтоб не ошибиться, кавычки на двойные менять нужно.
0
Думаю, они не зря в документации написали code (у меня курсив пропал). Т.е. имелось в виду, что можно сначала проверить синтаксис code (не во время его выполнения, а перед ним!), и лишь если нет ошибок, запускать на выполнение $XECUTE(code,paramlist).
Из общих соображений: имхо, сомнительная конструкция с толком не описанной семантикой, в отличие от классической Xecute, с которой всё ясно.
Преимуществ не видно, кроме ещё одного отступления от Стандарта. Какой смысл параметров, если контекст этой «инлайн» функции не изолирован? Какой смысл в функции, если она одноразовая?
Из общих соображений: имхо, сомнительная конструкция с толком не описанной семантикой, в отличие от классической Xecute, с которой всё ясно.
Преимуществ не видно, кроме ещё одного отступления от Стандарта. Какой смысл параметров, если контекст этой «инлайн» функции не изолирован? Какой смысл в функции, если она одноразовая?
+1
XECUTE, начиная с какой-то версии, тоже уже не классическая и может принимать аргументы так же как $xecute (http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_cxecute)
Смысл в одноразовых функциях такой же как в других неименованных константах.
Смысл в одноразовых функциях такой же как в других неименованных константах.
0
Но я не обязан передавать аргументы в Xecute, если мне этого не хочется )). Не будем спорить: конечно, это дело вкуса, чем пользоваться, но классический принцип «Не следует привлекать новые сущности без крайней на то необходимости» тоже никто не отменял )). Поэтому (имхо), такие вещи как передачу параметров в Xecute и функцию $xecute — не дающие принципиально новых возможностей, а лишь в какой-то степени сбивающих с толку неофита, осваивающего и без того непривычный язык — стоит просто игнорировать.
0
В порядке дружеской критики — как тестировать будете?
Еще варианты — шаблон адаптер + метод-генераторы. Например, с 2013 версии Func-метод
Если бы у нас %ResultSet использовался в десяти местах, меняли бы в десяти.«Однажды и только однажды» — не?
Еще варианты — шаблон адаптер + метод-генераторы. Например, с 2013 версии Func-метод
0
--
0
Sign up to leave a comment.
Код как аргумент в Caché ObjectScript