|
Передача параметров | ☑ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
0
Ненавижу 1С
гуру
24.08.10
✎
12:10
|
В 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С - не считая простых это ссылка на структуру хранящую тип и значение переменной. Поэтому все правильно. Ссылка всегда передавала "управление" над своим содержанием, и только используя спецификаторы доступа можно было ее "защитить".
Это верный подход |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |