![]() |
|
Есть ли отличие Процедуры от Функции (кроме отсутствия возвращаемого значения?) | ☑ | ||
---|---|---|---|---|
0
DJ Anthon
14.03.10
✎
06:20
|
Почти все типовые написаны с исплоьзованием Процедур. Но их нельзя вызвать в отладчике, только через Шаблон и то не всегда. Это специально сделано? или в этом есть какой-нибудь тайный смысл? Я привык что процедура - это функция, возвращающая void (в общем смысле). В 1с так же?
|
|||
1
Armando
14.03.10
✎
07:03
|
неа
|
|||
2
Chai Nic
14.03.10
✎
07:07
|
Специально. Ибо есть процедуры с весьма агрессивным поведением.. И если позволить их вызывать пользователю скажем из окна Табло.. :)
|
|||
3
Chai Nic
14.03.10
✎
07:09
|
Всё-таки, более правильно когда функция работает как функция в математическом смысле, то есть только возвращает значение, но не меняет состояние среды исполнения. Я в принципе даже против передачи изменяемых параметров..
|
|||
4
IamAlexy
14.03.10
✎
07:42
|
настоящие индейцы используют GOTO и не используют процедуры и функции
|
|||
5
DEVIce
14.03.10
✎
07:50
|
(4). Настоящие индейцы вообще обходятся без условных операторах, операторах цикла и передачи управления (перехода). :))
|
|||
6
Chai Nic
14.03.10
✎
07:52
|
Настоящие индейцы пишут программы в виде конечных автоматов на К155ЛА3 )
|
|||
7
ShoGUN
14.03.10
✎
08:58
|
(4)(5) Вы точно об индейцах, а не об индусах? ;)
(6) Про отечественную 155 серию микросхем они точно ниче не знают :) (3) Я придерживаюсь того же мнения, хотя тут вопросы с обработкой ошибок возникают... (0) "возвращающая void" - это как "живой труп" :) |
|||
8
DJ Anthon
14.03.10
✎
09:09
|
как вы все кучно... )))
(3) надо знать, какая функция что делает, иначе писать свою. мне, может, нужно в отладчике изменить значение, чтоб всю конфу не пересохранять для отладки, а то приходится облеплять конфу ненужными функциями, которые не нужны были бы, если бы отладчик был поумнее (изменение значений / присваивание, оператор ? и т. д.) (4) вау. ну кагбэ я догадывался, что ветка перейдет в юморную, но с вами я согласен. увы, я не индеец, и не индус. кто, правда, не знаю. (7) нет, привычка просто из борланда осталась. да и меньше проблем для скриптов, составляющих код (типа пхп). вы по ходу, японец? )))) |
|||
9
DJ Anthon
14.03.10
✎
09:15
|
(2) ах да. какое нафиг табло для пользователя??? я же отладку делаю, я не пользователь, я программист. и я знаю, что делаю, а не знаю - так у меня ничего и получится!.. просто облегчение работы небольшое было бы.
А еще в компиляторе не хватает функции Complete boolean eval. И непонятно, зачем сделали вылет на функциях Вид, если объект не того типа? возвращали бы NULL и все ) сами же отменили строгую типизацию... |
|||
10
ShoGUN
14.03.10
✎
09:22
|
(9) В семерке есть NULL? О_О
|
|||
11
Chai Nic
14.03.10
✎
09:27
|
(9) То что ты "делаешь отладку", ничуть не мешает любому пользователю через Табло вызвать функцию глобального модуля. В отличие от процедуры, которую так просто не вызвать.
|
|||
12
DJ Anthon
14.03.10
✎
09:31
|
(10) ПолучитьПустоеЗначение()
(11) о господи... щас только заметил такую фичу в режиме предприятия. много думаю... правда, проблемы это не решает, зато создает много новых... |
|||
13
DJ Anthon
14.03.10
✎
09:32
|
(+12) а Шаблон("мояглобальнаяпроцедура") - это разве не просто? юзер со знанием 1с, хоть и поверхностного, как обезьяна с гранатой.... будем чистить интерфейс сначла 1ске, потом юзерам )))
|
|||
14
Chai Nic
14.03.10
✎
09:39
|
(7) "тут вопросы с обработкой ошибок возникают"
Ну, ничто не мешает функции возвращать не скалярный тип, а вектор (список значений и т.п.), в котором в том числе хранится и статус завершения. (13) А вот фиг, через шаблон вызовется только функция, но не процедура |
|||
15
ShoGUN
14.03.10
✎
09:49
|
(12) Сразу видно, что человек восьмерки в глаза не видел :)))) Там есть и Null, и Неопределено и ПустаяСсылка() и это всё разные типы :) А результат ПолучитьПустоеЗначение() - это вовсе не NULL, а значение вполне себе определенного типа.
(14) Согласен, насчет вектора, хотя в типовых такие вещи не применяются практически, ни в семерке, ни в восьмерке :( |
|||
16
DJ Anthon
14.03.10
✎
09:55
|
(14) у меня просто уже замылилось. я использую конструкцию в отладчике глВыполнитьПроцедуру("мояглобальнаяпроцедура")
и Табло("ТаблицаЗначенийИлиСПисокЗначенийИликакаянитьещеХр*нь") (15) ну ну ну не надо мне. я сейчас не про восьмерку говорю. а на восьмерке хоть и не так давно работаю, но знаю, там все это есть. пишу между прочим перенос доков из 7-ки в восьмерку, штатный глючит сильно. понятно дело, не NULL, просто ограничение языка свое накладывают. я же на уровне регистров процессора имею в виду. другого пустого значения в 7ке я не знаю. |
|||
17
DJ Anthon
14.03.10
✎
10:00
|
короче говоря, я понял для чего нужно разделение на ф и п. чтобы "табло" 1совское не позволяло далеко лазить. спасибо всем за внимание, удачи )) хотя все равно это условно и глупо... быстрей бы на 8ку перейти...
|
|||
18
zak555
14.03.10
✎
11:12
|
(17) это не самое главное
|
|||
19
DJ Anthon
14.03.10
✎
12:10
|
(18) жду опровержения.... ))))
|
|||
20
dk
14.03.10
✎
12:17
|
(19) просто ты привык к Си-шному синтаксису, привык бы к Паскалю, не было бы таких вопросов
|
|||
21
DJ Anthon
15.03.10
✎
03:30
|
(20) нет, мне без разницы, какой язык (мне их в универе дофига в мозг напихали, даже свой изобрел на диплом)))) как я понял 1совский это нечто среднее между паскалем и си. от си совсем чуть чуть взяли. у меня и к паскалю аналогичные вопросы, но эт оязык древний и хорошо продуманный, так что это в принципе не претензии, а так, интересно просто. и еще. "пользователю" язык паскаль, как правило, недоступен. в конечной проге все-таки нету "Табла". ладно ветку закрывать можно.
|
|||
22
orefkov
15.03.10
✎
08:49
|
(0)
Ну, если процедура - это функция, возвращающая void, то для начала попробуй объяви переменную типа void, а потом присвой ей результат вызова процедуры. (9) Ты немного путаешь метод некоторых типов объектов "Вид" и оператор typeof. Это не одно и то же. А вообще, полный список того, чего не хватает в компиляторе 1С - занял бы очень много места. |
|||
23
DJ Anthon
15.03.10
✎
14:58
|
Вау, Орефков! Спасибо Вам за разработки, много чего почерпнул. Я вид с типом не путаю. просто приходится столько обходных маневров делать, чтобы обработка не вылетала на разных видах переменных, просто хотелось бы, чтобы исключительные ситуации обрабатывались в компиляторе немного помягче. ну это в принципе и есть озвученная вами крайняя мысль. я все понял кагбэ, можно тему закрывать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |