• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Функция с необязательными параметрами

  • Автор темы KLif
  • Дата начала
K

KLif

Всем привет.

Возможно ли определить функцию с необязательными параметрами? Кто-нибудь делал?
 
M

morpheus

чуть опередил Medevic меня....

да к сожалению такое невозможно реализовать в Lotus
ну так передавайте null(переменные) или Nothing(классы)
 
K

KLif

Ясно ... жаль, с передачей проблем нет, просто так наверно было бы удобнее ... ладно, спасибо :)
 
S

Sandr

Делаете переменную типа вариант в параметре функции. Передавайте любую переменную или empty, а в функции анализируйте параметр, определяйте не пустой ли, что передали и т.д...
 
O

Omh

Ну, Sandr, тут я с тобой не соглашусь.
Кмк, variant надо юзать только тогда, когда другого выбора нет (например, хранение даты).

Помню, на заре программерства, написал ф-ии, где входной параметр был Variant, внутри он анализировался ф-ий DataType/TypeName и, соответсвенно, обрабатывался.
Потом закол*цензура*ся это дело мантейнить.

Передача параметра вариантом, это, в каком-то роде, писание кода без Option Declare.
Вроде круто, но потом вылазит боком.

Лучше не лениться, и, при добавлении нового параметра, пройтись по базе и проапдейтить вызовы.

Соглашусь с очень злым модератором :)
 
S

Sandr

Omh
Да ну.. плюсоа много...
1. Передавать или унид дкоумента или объект документа - в функции анализровать и разруливать.
2. Декларейшн уишных классов в процедурах, которые в зависимости от различных условий работают и на сервере и на клиенте.
....

Дофига примеров есть...
 
O

Omh

Передавать или унид дкоумента или объект документа - в функции анализровать и разруливать.
Вот за это поубывав бы :)

Ну быть может (скорее всего), это у меня бзик, но я говорю, использую variant только для хранения даты и возвращения из ф-ии массива/списка.
Стараюсь variant не трогать.
Медленно, да и не очень секьюрно.

В тему был недавно случай:
Проблема - появляеться "0" из ниоткуда.
Смотрю, в ф-ии задекларены переменные, как вариант.
Там всякие условия, и в конце получаеться, что часть вариантов так и осталась isempty.

А потом скрипт
Код:
variant1 & variant2 & "1"
, где variant1 и variant2 остались isempty, выдавал "01".
Хотел найти программера и насрать ему на клавиатуру, но, к сожалению, он уже уволился.
 
K

Kee_Keekkenen

Omh
да за такое.. и на голову тоже..
 
M

morpheus

Странно.. не вижу в этом криминала - чем гибче функция - тем лучше...
тем больше шансов забыть/запутаться/ступить и в результате = напартачить
а также , variant больше под себя просит чем любой тип переменных , в следствии чего медленне работает
 
S

Sandr

тем больше шансов забыть/запутаться/ступить и в результате = напартачить
а также , variant больше под себя просит чем любой тип переменных , в следствии чего медленне работает

Посмотри, в ITStaff (или ITStaffLib)есть класс person, там такая "лажа" есть, пользуются же ей люди.. небыло жалоб пока :)
 
S

Sandr

я уже не занимаюсь БР :p


потому что взяли и тихонько перелапатили - потому что ГЛЮЧИЛО шо ппц :)

Но-но, в базовой версии (и большинстве написанных на её основе) никто не перелопачивал - живет до сих пор и припевает.. и глюков не замечено :p
 
M

morpheus

а я и не спорю что в базе всё гуд... но всё же перелапатили. :)

я считаю что вариант использовать только в крайних случаях уместно (даты,массивы) ... а то это как опшонс диклер не ставить...
 
K

K-Fire

Не понимаю, какие могут быть тормоза от варианта, когда на дворе 21 век, и процессорной мощности хватает более чем? :)
Передача варианта в функцию, а потом проверка что это, объект или строка или еще что - самый лучший способ писать удобные и гибкие функции.

Я использую вариант вместо дат, вместо массивов или списков, вместо объектов - прекрасно все работает. В общем ИМХО, нелюбовь к варианту - это привычка с давних времен, нечто нерациональное :)
 
S

Sandr

Не понимаю, какие могут быть тормоза от варианта, когда на дворе 21 век, и процессорной мощности хватает более чем? :)
Передача варианта в функцию, а потом проверка что это, объект или строка или еще что - самый лучший способ писать удобные и гибкие функции.

Я использую вариант вместо дат, вместо массивов или списков, вместо объектов - прекрасно все работает. В общем ИМХО, нелюбовь к варианту - это привычка с давних времен, нечто нерациональное :)

Хоть кто-то меня поддержал :)
 
O

Omh

K-Fire
Тогда в 21-ом веке сравни по быстродействию 2 агента:
Код:
Dim i As Integer
Dim j As Integer
Dim k As Integer

For i = 0 To 100
For j = 0 To 100
For k = 0 To 100
Next
Next
Next
и
Код:
Dim i As Variant
Dim j As Variant
Dim k As Variant

For i = 0 To 100
For j = 0 To 100
For k = 0 To 100
Next
Next
Next
Байан, конечно, и ситуация не близкая к жизни, но илюстрирует занятно.

Да и быстродействие variant'a - не главная проблема.
Главная, что терятся чёткость кода: открываешь ф-ию, там входной параметер - variant.
И фик знает, что туда должно передаваться.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!