Процедура со значениями по-умолчанию

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

swyatogor

Green Team
24.02.2014
588
24
BIT
0
Всем прив.. ну вот собственно сабж))
Возможно ли в лотусе для LS создавать процедуры функции) в библе или агентах с указанными для некоторых передаваемых параметров значение по-молчанию??))
 
@savl, Да легко))
Код:
CREATE procedure [dbo].[TaskConfirmation](@TaskID binary(16), @TaskType binary(4), @TaskNum numeric(3, 0), @UserAddr varchar(100), @Answer numeric(1, 0) = 0, @Comment nvarchar(500) = '', @Date datetime = 0)
это из sql
Код:
Sub TestSub(P As String = "Default")
	Print P
End Sub
из Basic
C++:
int product(double x, double y,
double z = 1, double t = 1)
{
return x*y*z*t;
}
C++
 
@swyatogor, прикольно, а зачем так?
понимю гибкость и тд...
НО если на конкретном примере, то:
Код:
Sub TestSub(P As String)
if len(p) = 0 then p = "Default"
Print P
End Sub

Другой вариант: передавать массив значений
 
@savl, не.. цель в другом))
Есть процедура - работает давно... вызывается из кучи мест - процедура по отправке сообщения определенной формы..
Нужно в эту процедуру добавить параметр для небольшого изменения в отображении при необходимости.. так вот чтобы всё сразу не переписывать.. не искать все точки вызова процедуры хотел добавить параметр по-умолчанию.. а уже потом методично и постепенно проходить по всем дизайн-элементам и дописывать (если нужно) этот параметр в вызов..
 
Нужно в эту процедуру добавить параметр для небольшого изменения в отображении при необходимости..
меняем тип параметра на Variant...
ну а дальше переписываем анализ параметра на DataType и делаем ветвление по смыслу
если IsEmpty = ставим дефолт ну и т.п.
 
@lmike, предлагаешь присоседиться к уже существующему параметру??.. вторым номером передавать?.. хм..
а не получится что тогда во всех вызовах параметр нуно будет передавать как вариант??..
 
@swyatogor,
@lmike,
я так понял предложение

Было:
Код:
Sub Print(msgText as String)
 
msgbox msgtext
 
end sub

Стало:
Код:
Sub Print(msgText as Variant)
 
select case Typename(msgText)
 
case "NOTESDOCUMENT":
 
 msgbox msgText.GetITemvalue("Text")(0)
 
case "STRING":
 
msgbox msgText
 
case "STRING()":
 
msgbox implode(msgText, chr(10))
 
case Else:
 
   End Select
end Sub
ну и так далее
 
@savl, типа того
только чтобы стринги не сравнивать -
 
Мы в соцсетях:

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