![]() |
![]() |
![]() |
|
Как вы относитесь к идее реализации указателей на функции в платформе? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
10.07.06
✎
12:23
|
В одной из веток разгорелся спор по теме. Каково ваше отношение к этой идее.
Приблизительный пример кода.
|
|||
1
AeDen
10.07.06
✎
12:26
|
Зачем?
|
|||
2
Дяпти
10.07.06
✎
12:27
|
было бы неплохо.
|
|||
3
Дяпти
10.07.06
✎
12:29
|
а еще из излишеств нехороших хочется иметь событие при изменении свойства объекта.
|
|||
4
s22
10.07.06
✎
12:30
|
(3) почему событие излишество? и почему нехорошее?
|
|||
5
Гений 1С
гуру
10.07.06
✎
12:31
|
Классический пример:
Если эторастение(объект) тогда поливать(объект) иначеесли этоживотное(объект) тогда кормить(объект) конецесли заменяется вызовом объект.питать() Объект - структура |
|||
6
Гений 1С
гуру
10.07.06
✎
12:32
|
(3) причем не только свойства объекта, но и свойства табличной части объекта. :)
|
|||
7
Гений 1С
гуру
10.07.06
✎
12:32
|
(4) сие называется триггер
|
|||
8
smaharbA
10.07.06
✎
12:33
|
Савсем сдурели
|
|||
9
vasinok
10.07.06
✎
12:55
|
(0) что это?
|
|||
10
Гений 1С
гуру
10.07.06
✎
12:56
|
(9) вызов ссылки по указателю на нее
|
|||
11
Волшебник
10.07.06
✎
12:57
|
(0) см. объект Действие
|
|||
12
Гений 1С
гуру
10.07.06
✎
13:00
|
Для 1С-ников наглядный пример:
Как можно счас: Объект=новый структура(); Объект.Вставить("Тип", "Растение"); Питать(Объект); Объект=новый структура(); Объект.Вставить("Тип", "Растение"); Питать(Объект); Функция Питать(Объект) Если Объет.Тип()="Растение" Тогда Сообщить("Поливаю водичкой с кальцием"); ИначеЕсли Если Объет.Тип()="Животное" Тогда Сообщить("Нарезаю морковку и прочия овощи"); КонецЕсли; КонецФункции Как можно с указателем: Объект=новый структура(); Объект.Вставить("Тип", "Растение"); Объект.Вставить("Питать", Поливать()); ^Объект.Питать(Объект); Объект=новый структура(); Объект.Вставить("Тип", "Животное"); Объект.Вставить("Питать", Кормить()); ^Объект.Питать(Объект); Функция Поливать(Объект) Сообщить("Поливаю водичкой с кальцием"); КонецФункции Функция Кормить(Объект) Сообщить("Нарезаю морковку и прочия овощи"); КонецФункции |
|||
13
Гений 1С
гуру
10.07.06
✎
13:00
|
(11) волшебник, не ври людям
|
|||
14
Гений 1С
гуру
10.07.06
✎
13:00
|
если это не ложь в утешение, гыгыгы
|
|||
15
Волшебник
10.07.06
✎
13:02
|
(13) Действие - это как раз и есть указатель на процедуру. Только вот количество дальнейших операций с ним очень ограниченное.
|
|||
16
TormozIT
гуру
10.07.06
✎
13:02
|
Пожалуй сюда же следует отнести и получение коллекции методов объекта.
Например, вызовем все беспараметровые методы объекта.
|
|||
17
Гений 1С
гуру
10.07.06
✎
13:02
|
(15) угу, про то и речь
|
|||
18
Гений 1С
гуру
10.07.06
✎
13:03
|
(16) йес
|
|||
19
Волшебник
10.07.06
✎
13:04
|
(17) Тем не менее, нельзя сказать, что в 1С нет указателей на процедуры (делегатов). Они есть.
|
|||
20
TormozIT
гуру
10.07.06
✎
13:06
|
(19) Согласны мы. Минималистическая реализация присутствует и только для интерфейса.
|
|||
21
romix
модератор
10.07.06
✎
13:07
|
Указатели - это зло.
Некое подобие делегатов (например, когда надо переформировать отчет по закрытию документа) я реализую через События. |
|||
22
Гений 1С
гуру
10.07.06
✎
13:10
|
(21) обоснуй про зло
|
|||
23
Парижская фанера
10.07.06
✎
13:12
|
Нафиг указатели нужны... От них в C# практически отказались (от практического использования)
|
|||
24
TormozIT
гуру
10.07.06
✎
13:13
|
(23) Отказались, заменив чем? У нас то, наверняка, такой альтернативы не будет.
|
|||
25
Херрес
10.07.06
✎
13:22
|
Ну вообще Выполнить() заменяет в некотором роде указатели на функции.
Так что если бы кому-нибудь это было действительно очень нужно - он бы этим уже пользовался |
|||
26
Гений 1С
гуру
10.07.06
✎
13:22
|
(25) чувак, выполнить - тормозит выполнение кода... Поэтому и не юзает никто и даже 1цэ не рекомендует.
|
|||
27
Херрес
10.07.06
✎
13:28
|
(26) да ладно. Кто-нибудь проверял ? :) Никто это не юзает не потому что медленно, а потому что всем влом (не очень-то и хотелось)
|
|||
28
Гений 1С
гуру
10.07.06
✎
13:29
|
(26) изначально криво - юзать оператор, делающий синтаксический разбор кода в практических целях.
|
|||
29
Херрес
10.07.06
✎
13:30
|
В конце концов вольность, с которой разработчики типовых обращаются с таблицами значений и деревьями заставляет думать что скорость - последнее, что кого-нибудь волнует
|
|||
30
Херрес
10.07.06
✎
13:32
|
В конце концов в типовых даже не очень понятно, куда можно было бы воткнуть вызов такого указателя. Потому что алгоритмы и так сделаны весьма универсальными и длинных конструкций выбора Если докВид="РасходнаяНакладная" Иначе... особо и не присутствует
|
|||
31
romix
модератор
10.07.06
✎
15:09
|
(22) Указатели обычно дают трудночитаемый код, в котором легко сделать критическую ошибку.
|
|||
32
smaharbA
10.07.06
✎
15:17
|
Вы чего асинхронности добиваетесь и параллельности ?
|
|||
33
s22
10.07.06
✎
15:20
|
(32) ну последние две в месте как показывает практика дают 10 рост производительности... и колво ошибо большее раз в 100
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |