Функция проверки существования переменной | |
---|---|
novik Автор Сообщений: 75 Дата регистрации: 30.10.2009 |
Уважаемые знатоки! Заранее извиняюсь за вопрос ...
Подскажите пожалуста функцию проверки существования переменой. ================== С уважением! |
Re: Функция проверки существования переменной | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Функция проверки существования переменной | |
---|---|
novik Автор Сообщений: 75 Дата регистрации: 30.10.2009 |
Спасибо Большое! )
|
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Непонятный вопрос, непонятный ответ...
Лучше бы озвучили решаемую проблему. Исправлено 1 раз(а). Последнее : akvvohinc, 25.04.18 20:03 |
Re: Функция проверки существования переменной | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Судя по ответу "Спасибо Большое", ответ устроил.
Хотя было нелишне спрашивающему знать, что у переменных есть разные области видимости. |
Re: Функция проверки существования переменной | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
И что кроме переменных есть поля в текущей рабочей области, которые тоже вполне себе доступны "просто по имени", в том числе и для функции TYPE. Да и то что функция TYPE в большинстве простых случаев (когда аргумент только простое имя содержит) заменяется на функцию VARTYPE - более быструю/эффективную, и не требующую кавычек вокруг имени переменной/поля...
------------------ WBR, Igor |
Re: Функция проверки существования переменной | |
---|---|
TAS Сообщений: 851 Откуда: Москва Дата регистрации: 28.09.2000 |
Так не лучше?
|
Re: Функция проверки существования переменной | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Еще не факт, что ТС имел в виду VFP. В FPD такой функции вообще нету
|
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Здесь интереснее другое - по какой причине появляется необходимость в таких действиях? На моей памяти узнать, есть ли в текущем месте кода переменная с некоторым именем, требовалось лишь из-за лени программистов. Например, в уже готовом приложении некоторая функция вызывалась множество раз из множества мест. Но вдруг появляется необходимость в дополнительном параметре, и это "новое поведение" функции требуется лишь в нескольких случаях из того множества вызовов. По-хорошему нужно добавить параметр в функцию, найти и поправить все 100500 строк ее вызовов. Но "хитрые" люди поступают иначе - вместо прямой передачи параметра и выполнения рутинной работы по правке всех вызовов определяют некоторую нелокальную переменную с уникальным именем в тех нескольких местах, при вызове из которых функция должна отработать иначе, чем в остальных. А в теле функции проверяется наличие этой переменной как имитации передачи нового параметра. Пока с другими причинами использования TYPE() или VARTYPE() не по прямому назначению сталкиваться не приходилось. |
Re: Функция проверки существования переменной | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Но это ведь еще один способ передачи параметра в функцию. Почему-то издревна считается, что параметры обязательно должны передаваться через LPARAMETERS, а возвращаться через RETURN или по ссылке. Но это не так. RS. Если не ошибаюсь, проверка существования переменной выглядит немного иначе: ? VARTYPE(goParam) != 'U' |
Re: Функция проверки существования переменной | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Совсем не обязательно. PCOUNT и те же TYPE/VARTYPE позволяют без проблем организовать "необязательный" параметр, и не менять вообще ничего в старом вызывающем коде. ------------------ WBR, Igor |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Использование внешней переменной без ее явной передачи в функцию действительно встречается нередко, но обычно в этих случаях не приходится заботиться о проверке такой переменной на существование - она должна существовать всегда. А вот строить алгоритм, основанный на самом факте наличия/отсутствия переменной, мне представляется совсем не комильфо. |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Скорее всего я уже забыл детали и привел некорректный пример, но смысл я передал, думаю, правильно. Вторая попытка. Готовое приложение и функция, вызывающаяся многократно из всех его подсистем. Возникает необходимость, чтобы при вызовах из части подсистем функция отрабатывала иначе, а править все случаи (допустим, их 1000) лень. Тогда вместо 1000 правок добавляется переменная лишь в головную программу подсистемы, требующей другого поведения функции. (в принципе под подсистемой можно понимать любую программу (процедуру), находящуюся в середине иерархии приложения, для которой все вызовы некоторой функции как напрямую из этой процедуры, так и из всех программ, находящихся ниже в стеке вызовов, должны отрабатывать иначе). Исправлено 1 раз(а). Последнее : akvvohinc, 26.04.18 19:17 |
Re: Функция проверки существования переменной | |
---|---|
Taran Сообщений: 13623 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Че развели-то опять?
Человек спросил, второй ответил. Тихо, скромно. Три поста. Все довольны. Или вам писюны жмут и охота меряться? На данном этапе вопрошающему достаточно первого ответа. А вам? |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Человек спросил, как пишется КОРОВА, ему ответили, но кому это интересно?
А вот порассуждать о животноводстве... |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Во так такое двойственное поведение можно достичь, не меняя интерфейса функции. Идея - в применении PRIVATE-переменной с хорошо уникальным именем. PRIVATE-переменная видна ниже в стеке всем процедурам. Уникальность - ее продетектируют только те функции, в которых вы намеренно примените ее имя.
|
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Ну так я именно об этом варианте и написал. |
Re: Функция проверки существования переменной | |
---|---|
Taran Сообщений: 13623 Откуда: Красноярск Дата регистрации: 16.01.2008 |
А я еще тему хотел сегодня поднять. Почему 1С ник стоит дороже всех? Да потому что это не программист в чистом виде, а иносказатель/интерпретатор хотелок. И он стоит дороже всех программистов.... p.s. Упс, пардон. Исправлено 1 раз(а). Последнее : Taran, 29.04.18 20:50 |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> И ведь действительно нужна прослойка манагеров, постановщиков и пр. шелухи.
Манагеры у програмеров - это кто? Никак не пойму... Продаваны что-ли? (не видел ни разу, все один да один) Доб. Или переводчиков хотелок юзера в язык заданий прогеру? ...Хз, испорченный телефон получится, скорее всего... Хотя, если изобретать ИИ, то, наверное, да, чтобы мильен прогеровскоординировать, надо ставить десятника, сотника, темника, тысячника и т.п. Хотя опять же, должна родиться {гениальная личность, гениальная идея}, типа Эйнштейна, а не 100 манагеров... Исправлено 1 раз(а). Последнее : of63, 26.04.18 22:17 |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Блин. Когда писал "Я помню чудное мгновение", так и знал, что кто-то уже опередил! |
© 2000-2024 Fox Club  |