|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Очень часто в последнее время на форумах по VBA попадаются скопипащенные ответы на тему "чем отличается функция Function от процедуры Sub". И количество ответов в стиле , дословно "процедура не может возвращать значение" просто зашкаливает. Так подумать, а что же делали люди без Function то, в обычном Sub , на бейсике ,году этак в 1980м. Правильный ответ - возвращали значения из Sub и не парились)) И также не парились, если надо было из одной процедуры (да и из функции можно) получить 2,3,4,5,N значений на выходе. Без возврата данных в виде массива. Все гораздо проще, просто все уже забыли) В целях проекта "вспомнить всё" можно напомнить как это было)) Как вывести значение из процедуры: Код: vbnet 1. 2. 3.
Обращение и вывод Значения2 из процедуры Sub (к примеру на кнопку гденить): Код: vbnet 1. 2. 3. 4.
Если заменить Sub на Function в примере выше, все также прекрасно будет работать. Просто в какой то момент разработчики слегка проапгрейдили Sub, назвали его Function и дописали к нему возможность вывода значений путем присвоения по ее ссылке на имя, значение выводимой переменной. Отличие Sub от Function для нас исключительно косметическое. Все можно вернуть, как из функции ,так и из Sub) Просто в функции ради удобства не надо дописывать какую именно переменную мы оттуда хотим вытащить. Можно сразу явно указать ИмяФункции=переменная. И сама функция сделает выбор нужной переменной и передаст по ссылке от своего имени) И вот таких тем море, на киберфоруме, planetaExcel etc... люди забыли что такое byVal и byRef) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 21:36 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов, А никто и не парится по этому поводу и даже с массивами, я например, если нужно, вообще использую процедуры и функции без каких либо аргументов, просто использую в их теле глобальные переменные и массивы... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 21:45 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
vmag, Так вы то еще застали наверное старую школу, c goto Sub и прочими, посмотрите как пишут сейчас, практически никто не использует byVal и byRef в коде) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 21:48 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов Отличие Sub от Function для нас исключительно косметическое. Код: vbnet 1.
А будь Split процедурой - фиг бы оно уложилось в одну строку. Т.е. как минимум экономия на (локальных) переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 21:54 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Akina Сергей Лалов Отличие Sub от Function для нас исключительно косметическое. Код: vbnet 1.
А будь Split процедурой - фиг бы оно уложилось в одну строку. Т.е. как минимум экономия на (локальных) переменных. Да, + экономия на локальных переменных; Но Split это встроенная процедура/функция (скорее всего может быть даже отдельный класс, со свойством, вы же обратились потом (0) и вывели первый элемент массива). Кстати вторая тема интересная,что String это по сути массив символов, и по нему также можно пробежаться. Это также народ, который учит VBA не догоняет сначала). И это не примитив типа byte,int. Перевести текст в массив обычной процедурой тоже можно, но да, код не на одну строку. Придется покружится. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:10 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов Отличие Sub от Function для нас исключительно косметическое. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:13 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов интересная,что String это по сути массив символов, и по нему также можно пробежаться. Это также народ, который учит VBA не догоняет сначала). И это не примитив типа byte,int. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:15 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
закусывать нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:15 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Панург закусывать нужно. Нифига подобного, текстовая переменная это не примитив. вы свободно можете сложить два числа к примеру 10+5 и получить 15. а потом к примеру нам нужно сложить две текстовые переменные "A"+"B". (Еще один момент из прошлого, раньше конкатенации не было, был один знак плюс) Порядок сложения простых чисел и сложения текстовых переменных совершенно отличается по способу обработки значений и накоплению информации в стеке. Не ,String не примитив,точно. Этому на первых занятиях учат на курсах по программированию. PS. - не пью, от слова совсем)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:24 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Вот кстати прекрасный пример у Акина со Split и текстовой переменной. Панург попробуйте то же самое Split сделать с числом, к примеру Split (100500) (0) ну а потом к примеру Split (100500)(1)) и вы увидите как примитив типа целого числа отличается от текстовой переменной типа String. Стринг это не примитив и по умолчанию проявляет свойства массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 22:50 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Пятница перестает быть скучной. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 23:05 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов Но Split это встроенная процедура/функция Сергей Лалов String это по сути массив символов, и по нему также можно пробежаться ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 23:50 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 05:45 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов посмотрите как пишут сейчас Группу профессоров-инженеров пригласили полетать на самолете. После того как они удобно расселись, их проинформировали, что самолет построили их студенты. Все, кроме одного, рванули к выходу в панике. Оставшегося профессора, спокойно сидящего на своем месте, спросили: "Почему вы остались? " «Я полностью уверен в своих студентах. Зная их, могу вас заверить, что этот кусок дерьма даже не взлетит». ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 12:19 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов Что исчё новенького открыли для нас в VBA? (начали рушить "легенды", дык не останавливайтесь ) Ждёмссс! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 13:44 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
ROI, Уверен, что для тех кто здесь отписался и частый гость ветки access ничего нового не открыл . Потому что все кто отписался, средний стаж в vba 10++. А вот людям , которые задают подобные теме топика вопроса, есть шанс попасть сюда по ссылке и посмотреть как это работает. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:10 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
PS . Недавно показал одному человеку как параллельно из функции можно вывести значения ссылаясь на саму функцию и на аргументы передаваемые по рефу, у него был разрыв шаблона, по типу такого: Код: vbnet 1. 2. 3. 4. 5.
И помимо вызова самой функции которая выводит значение сама, можно ещё дёрнуть параллельно по рефу два значения из сигнатуры функции. Шок контент практически. Очень удивился , потом прочитал что то, и стал отмазываться типа это устаревший метод использования итд итп) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:33 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов PS . Недавно показал одному человеку как параллельно из функции можно вывести значения ссылаясь на саму функцию и на аргументы передаваемые по рефу, у него был разрыв шаблона, по типу такого: Код: vbnet 1. 2. 3. 4. 5.
И помимо вызова самой функции которая выводит значение сама, можно ещё дёрнуть параллельно по рефу два значения из сигнатуры функции. Шок контент практически. Очень удивился , потом прочитал что то, и стал отмазываться типа это устаревший метод использования итд итп) Это мы проходили передача по ссылке и по значению byVal и byRef ничего нового вы не открыли. штука в неумелых руках "разрушительная" по этому по умолчанию и стоит byVal да и к стати (вы из функции значение не выводите ) вы меняете значение неявной переменной в куче памяти, ну огребаете потом по полной. Зы в функции ошибка MyFunct= znach Это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:48 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
ROI MyFunct= znach Это как? В смысле как?) Это пример функции, где она сама выводит вводимое в нее значение (просто как пример), а также параллельно,уже вызвав её можно еще дернуть два других из сигнатуры) К примеру: Код: vbnet 1. 2. 3. 4.
То есть она передала значения и в классическом для нее виде и еще 2 передала по ссылке) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 15:06 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
ROI по этому по умолчанию и стоит byVal ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 15:21 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
По умолчанию в VBA по идее вроде должен стоят byRef , потому что он и переменную обычного типа и объект может передать( сослаться имею ввиду) Панург первым успел)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 15:27 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
Сергей Лалов, То, что осветил тему - молодец, новичкам из твоего первого письма действительно будет полезно освежить знания по теме топика. Уровень знаний (мое субъективное мнение) со временем действительно падает. Может это связано с нашими инновациями в области образвательной системы, или то, что VB не развивается - не знаю, наблюдения именно такие. Мне больше понравилась такая твоя конструкция, судя по всему она взорвала мозг не только вашему другу, но и глубокоуважаемому ROI, а потом и мне: Код: vbnet 1. 2. 3. 4. 5.
Думал, что это ты косякнул,и на выходе выбьет ошибку, но это работает и как вообще это можно =)) . Пришлось перетряхнуть своё понимание function и sub еще разок. Для самоуспокоения. Работаю уже достаточно давно ,преподом , в т.ч. консультирую по VBA, пару учебных занятий точно перепишу с оглядкой на этот пример. Нашел полезной информацию именно из дискуссий, по первому письму все и так ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:17 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
ГостьPRST ... Работаю уже достаточно давно ,преподом , в т.ч. консультирую по VBA, пару учебных занятий точно перепишу с оглядкой на этот пример. Нашел полезной информацию именно из дискуссий, по первому письму все и так ясно. ой-ёй-ёй, какой кошмар. Раньше мир устроен был так, что учили те, кто не умеет работать. А теперь, оказывается, уже учат те, кто даже приблизительного представления не должен иметь о том, чему учит... .... И как сумел мир докатиться до откровений этого топика с первого поста начиная... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:29 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
booby ой-ёй-ёй, какой кошмар. Раньше мир устроен был так, что учили те, кто не умеет работать. А теперь, оказывается, уже учат те, кто даже приблизительного представления не должен иметь о том, чему учит... .... И как сумел мир докатиться до откровений этого топика с первого поста начиная... Как педагог со стажем, могу предположить, что у Вас в какой то момент в силу жизненных обстоятельств произошла корреляция влево (см. картинку) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 21:28 |
|
чем отличается функция от процедуры (разрушители легенд)
|
|||
---|---|---|---|
#18+
ГостьPRST, Педолог ты (в лучшем случае), а не педагог, раз такими картинками сыпешь. А так ясно, что ты дурачок ты со стажем, раз сам на количество лет напираешь. Перетряхивай своё понимание. Да и не надо ни педологу, ни педагогу, лезть в темы в оценками по предметам, в которых у него отсутствует начальное образование. Проблема не в том, что ты лично себя позоришь. Показывая на тебя пальцем, люди могут оказаться склонными судить о преподавателях вообще, ссылаясь на твой пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 21:38 |
|
|
start [/forum/topic.php?fid=45&fpage=24&tid=1610360]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 165ms |
0 / 0 |