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

Тема в разделе "Lotus - Программирование", создана пользователем KLif, 9 апр 2008.

  1. KLif

    KLif Гость

    Всем привет.

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Нельзя.
     
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    чуть опередил Medevic меня....

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

    KLif Гость

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

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    чесно, не очень... не люблю variant ... слишком растяжимый он
     
  7. Sandr

    Sandr Гость

    Вот в этом то и вся прелесть, что он растяжимый :)
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну, Sandr, тут я с тобой не соглашусь.
    Кмк, variant надо юзать только тогда, когда другого выбора нет (например, хранение даты).

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

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

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

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

    Sandr Гость

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вот за это поубывав бы :)

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

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

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

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    Omh
    да за такое.. и на голову тоже..
     
  12. Sandr

    Sandr Гость

    Странно.. не вижу в этом криминала - чем гибче функция - тем лучше...
     
  13. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    тем больше шансов забыть/запутаться/ступить и в результате = напартачить
    а также , variant больше под себя просит чем любой тип переменных , в следствии чего медленне работает
     
  14. Sandr

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    я уже не занимаюсь БР :p

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

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а я и не спорю что в базе всё гуд... но всё же перелапатили. :)

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

    K-Fire Гость

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

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

    Sandr Гость

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    K-Fire
    Тогда в 21-ом веке сравни по быстродействию 2 агента:
    Код (Text):
    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
    и
    Код (Text):
    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.
    И фик знает, что туда должно передаваться.
     
Загрузка...

Поделиться этой страницей