Имя: Пароль:
1C
 
Передача параметров
0 Ненавижу 1С
 
гуру
24.08.10
12:10
1. Это ошибка реализации 0% (0)
2. Это верный подход 0% (0)
3. Я не думал об этом 0% (0)
Всего мнений: 0

В 1С по-умолчанию передаются параметры по ссылке, а вот по значению только специально через директиву Знач
Насколько мне известно в других языках с точностью до наоборот. Вопрос, это историческая ошибка 1С или глубоко продуманный верный ход?
1 Господин ПЖ
 
24.08.10
12:11
это помесь 1-го и 2-го + неявная типизация
2 Лефмихалыч
 
24.08.10
12:12
>Насколько мне известно в других языках с точностью до наоборот
либо перечисли другие языки, либо бери слова обратно
3 Mort
 
24.08.10
12:12
Там где отсутствует понятие указателя

Это верный подход
4 Vovan1975
 
24.08.10
12:12
(2) да, я бы тоже не стал так категорично...
5 DJ Anthon
 
24.08.10
12:12
(2) а паскаль?
6 Ненавижу 1С
 
гуру
24.08.10
12:13
(2) Delphi, С#, C++
7 DJ Anthon
 
24.08.10
12:13
(3) +5

Это верный подход
8 Господин ПЖ
 
24.08.10
12:13
(2) ну в C# например... by ref
9 Mort
 
24.08.10
12:14
(2) В С++ создаются копии. Чтобы передать по значению нужно использовать в объявлении процедуры &.
10 Vovan1975
 
24.08.10
12:14
а в java, Лисп?
11 DJ Anthon
 
24.08.10
12:14
главное, привыкнуть..... пустался только при первом использовании. дальше тупо запомнил
12 ice777
 
24.08.10
12:16
Какая разница как, абы работало. редко, когда передача параметров используется часто, а если такое и происходит - правьте код.
13 Ненавижу 1С
 
гуру
24.08.10
12:20
особенно весело выглядит конструкция передачи параметра по ссылке со значением по умолчанию
14 Ненавижу 1С
 
гуру
24.08.10
12:20
имхо, 1С тупанула давным давно, теперь тащит "наследство" дальше

Это ошибка реализации
15 Ненавижу 1С
 
гуру
24.08.10
12:21
+(8) более того, там ref надо писать не только в декларациях, но и при вызове каждый раз
16 Лефмихалыч
 
24.08.10
12:24
микрософт, надо полагать, тоже с VBA тупанула?
и теперь умирает в обломах и через силу тащит это наследство

Это верный подход
17 Amiralnar
 
24.08.10
12:27
(16) +1

Это верный подход
18 Господин ПЖ
 
24.08.10
12:28
vba такой же специализированный "недоязык" типа 1с
19 Лефмихалыч
 
24.08.10
12:31
(18) совершенно верно, именно по этому попытки сравнения этих двух с Delphi и C++ вызывают баттхёрт. Глупо сравнивать кислое с мокрым.
20 Ненавижу 1С
 
гуру
24.08.10
12:33
(16) в общем именно так и есть
21 Mort
 
24.08.10
12:39
Но это все-таки не такой жуткий косяк как NULL и Неопределено ?
22 Ненавижу 1С
 
гуру
24.08.10
12:43
(21) это так, косячок, по сравнению с тем косячищем
23 Mort
 
24.08.10
12:44
(22) Т.е. правильнее было писать нечто перед параметрами передаваемыми по ссылке, а по умолчанию передавалось бы по значению?
24 Ненавижу 1С
 
гуру
24.08.10
12:47
(23) имхо, конечно, но да
25 Mort
 
24.08.10
12:50
(24) Если "знач" используется максимум в 5% всех процедур на 1С, значит придется писать практически везде. Зачем?
26 Ненавижу 1С
 
гуру
24.08.10
12:53
(25) в 5% пишется Знач, хотя используется передача по значению именно в 95%
27 Amiralnar
 
24.08.10
12:55
(21) А подробнее?
28 Лефмихалыч
 
24.08.10
12:57
(26) в 95% из эти твоих 95% всем по.уй, как передается параметр, так зачем память хавать, передавая по значению?
29 Mort
 
24.08.10
12:57
(26) Неправда. Создавать копию передаваемого объекта оправдано если нужно безопасно изменить его в теле или _специально_ получить копию.
30 Ненавижу 1С
 
гуру
24.08.10
12:58
(28) безопасность кода
31 Ненавижу 1С
 
гуру
24.08.10
12:58
32 Mort
 
24.08.10
13:03
(30) Пример опасного кода и решения с помощью перевод на передачу по значению по-умолчанию.
33 Mort
 
24.08.10
13:03
*решения с помощью перевода 1С на передачу параметров по значению по умолчанию.
34 Ненавижу 1С
 
гуру
24.08.10
13:05
Процедура Тест(Чтото)
 Чтото=Чтото+1;
КонецПроцедуры

Тест(ВыборкаЗапроса.Сумма); //тут будет ошибка real-time
35 Abracadabra
 
24.08.10
13:37
Так-так, сначала семерочники клевали восьмерку за то, что там нет семерочных методов/приемов и прочего, а теперь еще и начали клевать за то, что встроенный язык не похож на другие языки... Должна ли волновать шерифов-1С проблема каких-то там индейцев-программистов, что им не хватает чего-то там из других языков? ;)
36 Ненавижу 1С
 
гуру
24.08.10
13:39
(35) правильно, зачем юзать известные вещи? нужен собственный велосипед, пусть квадратноколесный, но свой!
37 Abracadabra
 
24.08.10
13:42
(36) а что там квадратноколесного? Расскажите о преимуществах, которые предоставит постоянная передача параметров по значению.
38 Ненавижу 1С
 
гуру
24.08.10
13:43
(37) например (34)
39 Ненавижу 1С
 
гуру
24.08.10
13:44
про NULL вообще молчу
40 Abracadabra
 
24.08.10
13:48
(38) ну а зачем такой маневр нужен? Для каких целей может понадобиться изменять значения _фиксированной_ коллекции?
41 Rusel
 
24.08.10
13:48
Передача по значению - это частный случай. Не будешь же передавать по значению переменные типа ДокументОбъект или "ТаблицаЗначений. Правильно сказал (28)

Это верный подход
42 Ненавижу 1С
 
гуру
24.08.10
14:00
(41) а почему и нет? может я подменю ссылку на объект внутри
43 Лефмихалыч
 
24.08.10
14:01
(34) если ты два пальца в розетку засунешь, 1С тебе тоже ни чего не скажет, но это ни как 1С не характеризует
44 Ненавижу 1С
 
гуру
25.08.10
09:31
(43) безопасность кодинга надо повышать, а 1С часто забивает на это
45 Adept
 
naïve
25.08.10
09:42
Если считать что  реализация мягкой типизации сходна с OLEVARIANT типом то все переменные в 1С - не считая простых это ссылка на структуру хранящую тип и значение переменной. Поэтому все правильно. Ссылка всегда передавала "управление" над своим содержанием, и только используя спецификаторы доступа можно было ее "защитить".

Это верный подход