Когда это инкапсулирует MATLAB® функции, продукт MATLAB Compiler SDK™ добавляет аргументы функции MATLAB в список аргументов методов класса, которые это создает. Таким образом, если функция MATLAB использует varargin
и/или varargout
, компилятор добавляет эти аргументы в список аргументов метода класса. Они добавляются в конце списка аргументов для аргументов ввода и вывода.
Можно передать несколько аргументов как varargin
массив путем создания Variant
массив, присваивая каждый элемент массива к соответствующему входному параметру.
Смотрите Создание COM-класса для получения дополнительной информации об отображении аргументов ввода и вывода.
Следующий пример создает varargin
массив, чтобы вызвать метод, инкапсулирующий функцию MATLAB формы y=foo(varargin)
.
MWUtil
класс включен в MWComUtil
служебная библиотека обеспечивает MWPack
функция помощника, чтобы создать varargin
параметры.
Function foo(x1 As Variant, x2 As Variant, x3 As Variant, _ x4 As Variant, x5 As Variant) As Variant Dim aClass As Object Dim v(1 To 5) As Variant Dim y As Variant On Error Goto Handle_Error v(1) = x1 v(2) = x2 v(3) = x3 v(4) = x4 v(5) = x5 aClass = CreateObject("mycomponent.myclass.1_0") Call aClass.foo(1,y,v) foo = y Exit Function Handle_Error: foo = Err.Description End Function
Следующий пример обрабатывает varargout
аргумент в качестве трех отдельных аргументов. Эта функция использует MWUnpack
функция в служебной библиотеке.
Используемой функцией MATLAB является varargout=foo(x1,x2)
.
Sub foo(Xout1 As Variant, Xout2 As Variant, Xout3 As Variant, _ Xin1 As Variant, Xin2 As Variant) Dim aClass As Object Dim aUtil As Object Dim v As Variant On Error Goto Handle_Error aUtil = CreateObject("MWComUtil.MWUtil") aClass = CreateObject("mycomponent.myclass.1_0") Call aClass.foo(3,v,Xin1,Xin2) Call aUtil.MWUnpack(v,0,True,Xout1,Xout2,Xout3) Exit Sub Handle_Error: MsgBox(Err.Description) End Sub
В MATLAB, varargin
входные параметры функций являются дополнительными, и могут присутствовать или не использованы от вызова функции. Однако от Microsoft® Visual Basic®, функциональные подписи более строги — если varargin
присутствует среди входных параметров функции MATLAB, вызов VBA должен включать varargin
, даже если вы хотите, чтобы он был пуст. Передать в пустом varargin
, передайте Null
вариант, который преобразован в пустой массив ячеек MATLAB, когда передано.
Следующий пример иллюстрирует, как передать пустой вариант для того, чтобы передать пустой varargin
:
Function foo(x1 As Variant, x2 As Variant, x3 As Variant, _ x4 As Variant, x5 As Variant) As Variant Dim aClass As Object Dim v(1 To 5) As Variant Dim y As Variant On Error Goto Handle_Error v(1) = x1 v(2) = x2 v(3) = x3 v(4) = x4 v(5) = x5 aClass = CreateObject("mycomponent.myclass.1_0") 'Call aClass.foo(1,y,v) Call aClass.foo(1,y,Null) foo = y Exit Function Handle_Error: foo = Err.Description End Function