2013-11-21 1 views
1

У меня есть функции, такие как:Избегайте перегрузки, когда функции отличаются только числом параметров

Public Overloads Function(byval Par1 as Integer) as Array 
dim arr_i(0) as double 
arr_i(0) = Par1 
Return arr_i 
end function 

Public Overloads Function(byval Par1 as Integer, byval Par2 as Integer) as Array 
dim arr_i(1) as double 
arr_i(0) = Par1 
arr_i(1) = Par2 
Return arr_i 
End function 

Public Overloads Function(byval Par1 as Integer, byval Par2 as Integer, byval Par3 as Integer) as Array 
dim arr_i(2) as double 
arr_i(0) = Par1 
arr_i(1) = Par2 
arr_i(2) = Par3 
Return arr_i 
End function 

Мои функции являются немного более сложным, но это основа. Типы возвращаемых значений и параметров не изменяют только количество параметров. Я стараюсь избегать дополнительных параметров из-за проблем с несовместимостью.

Глядя на мои функции перегрузки (скажем, мы используем цикл для вычисления чего-то с параметрами), в каждой функции есть один и тот же код, просто меняет число параметров. Скажем, я хочу, чтобы это для 1 до 20 параметров, которые мне пришлось бы писать (или копировать) один и тот же код снова и снова. У меня такое чувство, что это не может быть лучшим способом решения этой проблемы, но не может быть более эффективным. Есть ли лучший способ реализации этого?

ответ

0

В вашем случае вы должны использовать paramarray. Это фактически своего рода передающий параметр в функцию/процедуру. Вы можете изменить свой код, как показано ниже, для достижения ваших потребностей.

'Function definition 
Public Function test(ByVal ParamArray Pars() As Integer) As Integer() 
    Return Pars 
End Function 

'Function calls 
Call test(1, 2, 4, 5, 34, 34, 223, 42) 
Call test(1, 2) 
Смежные вопросы