Re: Функция проверки существования переменной | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Да даже "гений чистой красоты" Пушкину пришлось в кавычки брать, поскольку это выражение впервые придумал Жуковский, обозначив так жену царя Александра I. Исправлено 1 раз(а). Последнее : Simple777, 26.04.18 22:29 |
Re: Функция проверки существования переменной | |
---|---|
Taran Сообщений: 13626 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Нормальные то люди как считают и говорят?
- Покупаю тонну металла за штуку. Продаю за три. Вот так вот и живу на эти два процента. По интеллекту гораздо... А от манагера мангала, до Чел си и.... (Давайте встанем. Сказал бы я... А? Иль скобку закрываю? Да.) |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Почему в этих форумах не придумали такую шнягу, чтобы, каждое сообщение трэда относилось не только к самому треду, но и к другому, или из этих сообщений строились трэды, соответственные формату разделов форума (ведь мы сейчас в профильной ветке, но ассоциации увели куда-то в филоромантическую даль).
Ну, типа отделения веток (юзерами), вплоть до самоопределения... Наверное, социосети уже имеют эту возможность... Опять стартап прощелкан ( Олег выразил стихом > Давайте встанем. Сказал бы я... А? > Иль скобку закрываю? Да! (внес правку - заменил точку в конце на акцент !) Исправлено 1 раз(а). Последнее : of63, 26.04.18 22:41 |
Re: Функция проверки существования переменной | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Г*нокод в чистом виде. Уж извини... ------------------ WBR, Igor |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Уж извини, но собственный код, за 10-20 лет станет каловыми камнями, а не говнокодом. И даже он должен работать (и работает, кстати, по определению), пока современные матери не родят вундеркиндов-гениев программирования, и не перепашут к чертовой матери все то, что отцы их понаделали в этих каловых камнях, пля. |
Re: Функция проверки существования переменной | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Такой код отличается от "мамонтового навоза" тем, что является г*ном изначально.
------------------ WBR, Igor |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Все мы из
... Мой код работает, а твой? Не сомневаюсь, что тоже. Но вернусь к сообщению от без пяти минут 1 час ночи: Во так такое двойственное поведение можно достичь, не меняя интерфейса функции. Идея - в применении PRIVATE-переменной с хорошо уникальным именем. PRIVATE-переменная видна ниже в стеке всем процедурам. Уникальность - ее продетектируют только те функции, в которых вы намеренно примените ее имя. Г*нокод в чистом виде. Уж извини... Вот думаю, оба кода работают, и наш(мой), и твой (кстати, не запомнил твою версию кода, напомни пож.?)... Один код у тебя говняной (наш), другой код есть хороший (твой). Покажи ТВОЙ аналог нашего когда, с нашей странной "уникальной переменной", но уже без нее, вероятно ) В интерфейс функции мы не влазим, не меняем его? Да?) |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
В кавычки эта цитата не заключалась, ее набирали курсивом, что позже привело к современному "бесцитатному" варианту. |
Re: Функция проверки существования переменной | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
ИМХО. Чем плохо. Через пол года, снова надо будет вызвать эту функцию с этим параметром. Замучаешься имя искать))) Скорее новое создашь, и еще одну вставку сделаешь) Ну или
Хотя решается все элементарно. Добавляешь еще параметр, и проверяешь его существование. При простом алгоритме, можно сделать функцию вызова старой функции, либо нового алгоритма. В принципе то же что у тебя, только без внешних примочек.
У меня это часто. Все вызываемые из объекта, объекты, возвращают значения в один метод. И там часто приходится проверять, откуда вернулось значение. Именно таким способом) ------------------ |
Re: Функция проверки существования переменной | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Как-то вообще никогда не было необходимости проверять существование переменной.
Возможно нужно при псевдослучайном именовании. Но само такое именование, на мой взгляд, не слишком хорошо. Всегда лучше знать - кого как зовут. ;) Это все равно что в паспортном столе тут же выдавать паспорта всем желающим, кто только заглянет и попросит. Единственное, что приходится проверять - существование объекта с каким-то нормированным именем при создании его в классе. Недоработка, на мой взгляд, от создателей фокса. Могли бы дать возможность и молча, с указанием например доп.параметра, перезаписывать старый объект новым с таким же именем. Упростило бы в ряде случаев код.
Так проверять, откуда вернулось, можно же в принципе и проще. Если конечно я правильно понял о чем речь. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Аспид,
1. С введением нового параметра в функцию - это понятно, но это не то о чем был спич. Именно имелось ввиду: НЕ МЕНЯЯ ИНТЕРФЕЙС ВЫЗОВА функции изменять ее поведение. Возникает, когда написано много кода с вызовами этой функции, и параметров у нее много, и влезать в код проги, добавляя/вставляя новый параметр в вызовы этой функции - бывает некомильфо... 2. В принципе то же что у тебя, только без внешних примочек. FUNCTION функция PARAMETERS старые_параметры, новый_параметр ... IF TYPE("новый_параметр")="U" && типичное поведение функции. r = 1 ELSE && атипичное поведение функции. Можно и в значении условленной переменной что-то передать... r = -1 ENDIF RETURN r Есть много способов передавать необязательные параметры. В твоем примере я бы добавил PCOUNT(): IF PCOUNT()>=2 .AND. !ISNULL(новый_параметр) && атипичное поведение функции. ISNULL() позволит добавить еще и 3й необязательный параметр, при том "опускать" передачу второго, задавая его значение NULL. ...Не рассматриваем ситуацию, когда надо передать параметр, и именно NULL... Исправлено 1 раз(а). Последнее : of63, 27.04.18 08:33 |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Совсем не то же самое. В твоем варианте: - во-первых, править придется все 100500 вызовов функции, где это требуется; - во-вторых, в скорее, во-первых - как ты определишь, в каких случаях надо добавить этот новый аргумент при вызове функции? Ведь эта функция вызывается иначе не обязательно в той процедуре, в которой он определял переменную, а из любой процедуры, лежащей ниже в стеке вызовов: 1) Из процедуры C вызывается функция F. 2) При этом, если C вызывается из процедуры A (не обязательно напрямую), то функция F должна отработать иначе, чем когда C вызвана, минуя А. Исправлено 4 раз(а). Последнее : akvvohinc, 27.04.18 08:57 |
Re: Функция проверки существования переменной | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Поясни примером, что ты имеешь в виду. |
Re: Функция проверки существования переменной | |
---|---|
Taran Сообщений: 13626 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Серьезные обвинения создателей. И где прикажете указывать этот доп параметр? И addobject() и newobect() содержит список параметров "произвольной" длины. Т.е. параметр на перезаписывание должен быть первым. И в миллионе случаев, когда он не нужен, его все-равно пришлось бы указывать. Так что не надо ля-ля. Все ровно сделано. А ежели так уж хочется автоматом пересоздавать объект, то что мешает сделать свой метод, который бы удалял старый объект и создавал новый? Не думаю что таких классов прям мульён. Да и в любом случае базовых классов то всего чуть-чуть. P.S. Упс, пардон. Пост писал в случае когда объект как свойство другого объекта. Но в любом случае, CreateObject() также имеет список "неопределенной" длины. И лишний параметр в Init(), куда все они попадут - явно лишний. Исправлено 1 раз(а). Последнее : Taran, 27.04.18 09:04 |
Re: Функция проверки существования переменной | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Аспид
Вы бы сначала хоть бы проверили свой код, прежде чем мериться. У вас всегда возвращается одно значение. of63 Чтобы избежать трудных имен переменных, можно использовать такую конструкцию:
Найти применение флаг-переменной можно найти - к примеру, поставить ей в соответствии наличие флаг-файла, объекта. Исправлено 1 раз(а). Последнее : lulgu, 27.04.18 10:12 |
Re: Функция проверки существования переменной | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Ну скажем, когда именуют от балды. Если же имя имеет вполне конкретное значение, какой смысл проверять его существование. В крайнем случае, если сомневаешься, не употреблял ли ранее, можно глянуть через поиск в проекте при написании кода.
Да разве ж это серьезные обвинения. Серьезных тоже можно при желании найти много. Но это не оно. А что недоделка - так это правда ж таки. Можно было бы и первым параметром сделать, ничего страшного. Можно было бы и SET для такого случая сделать, ну если уж так хочется по старинке. Тут ведь как. SET SAFETY OFF распространяется только на все старое, а на все подобное как бы уже нет. Оно и понятно в принципе. А насчет нужности - вот что бы ты делал скажем без того же SET SAFETY? Или тоже хотел бы за каждым разом не переписывать просто молча скажем тот же файл, а писать целую процедуру, только для одного того, чтобы она переписывала вместо старого файла новый? ;) В этом отношении в FPD еще неплохо придумали с SET SAFETY. Тот же VBS в ряде функций не может переписать старый файл. Из-за чего нужно горлдитль огород. Оно правда как-то относительно недавно сослужило и хорошую службу. Есть такой вирус, подгружаясь в память почти мгновенно прописывает свое тело во все(!) html в системе в хвост файла в виде скрипта со своим же телом. И загрузка любого из них снова заражает систему. Как выяснилось из экспериментов, скрипт не может обрабатывать файлы с атрибутом "только чтение". Т.е. отличной защитой стало простое присвоение атрибута всем html (через ТС делает парой кликов) на данном компе, а их там море, причем ненужных, пользователь никогда ничего не создает, но с программами всякая ерунда абсолютно не нужная ставится, типа хелпы на всех языках, вплоть до мумбу-юмбу, тысячи файлов в итоге, и все с вложенной заразой становятся. Антивирусы с данным вирусом во многом слишком уж лояльны были, возможно он не творил ничего деструктивного, либо удаляли, а он заново возрождался блин из пепла, благодаря вот такой просто студенческой хитрости его создателей, воспользовавшихся дубизмом создателей языка html. Но простая невозможность уже скриптового языка переписать файл с атрибутом, оказалась решающей. Это все может не для данной ветки. но так, к слову. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Функция проверки существования переменной | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Чтобы избежать трудных имен переменных, можно использовать такую конструкцию:
Лулгу, ты не прав ) |
Re: Функция проверки существования переменной | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
[quote of63]> Чтобы избежать трудных имен переменных, можно использовать такую конструкцию:
Лулгу, ты не прав )[/quote] Лулгу всегда прав. Команда Private не объявляет переменные, она скрывает объявленные переменные. |
Re: Функция проверки существования переменной | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
akvvohinc Ей богу не понимаю!
С какой же стати? Те вызовы что были раньше, так и будут работать как раньше! Про второй случай, не очень понял. Ясно только что много старой логики рушится, и подходить надо тщателнЕЕ Неееее....)))) Это условие ты придумал) С какой это стати не менять? Есть базовые классы. Когда их вызывает кто то другой, они знают, что вернуть свои данные, надо в определенный метод вызвавшего объекта. Есть некий объект Q. Ему понадобились данные из другого Z. Он его создает, и передает ему ссылку на себя. После чего - отдыхает, ждет когда Z разрешится от бремени. Z Возвращает в Q свои данные. Проблема в том, что Q может вызвать 123 различных объекта.) И ему надо знать, кто же вернул ему значения. Вот часто и использую, уникальность возвращаемых свойств. ------------------ |
Re: Функция проверки существования переменной | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Конечно, у вас ведь ничего не меняется от вашей переделки. Типичная ошибка - вы проверяете параметр, а не переменную. |
© 2000-2024 Fox Club  |