exponenta event banner

Вызов методов экземпляра класса

Стандартная методика отображения

После создания экземпляра класса можно вызвать методы класса для доступа к инкапсулированным функциям MATLAB ®. Продукт MATLAB Compiler SDK™ использует стандартный метод для сопоставления исходного синтаксиса функции MATLAB со списком аргументов метода. Этот стандартный метод отображения выглядит следующим образом:

  • nargout

    Если метод имеет выходные аргументы, первый аргумент всегда nargout, который имеет тип Long. Этот входной параметр передает нормальный MATLAB nargout параметр инкапсулированной функции и указывает количество запрашиваемых выходов. Методы, не имеющие выходных аргументов, не передают nargout аргумент.

  • Выходные параметры

    Следующее nargout - выходные параметры, перечисленные в том же порядке, в котором они отображаются в левой части исходной функции MATLAB.

  • Входные параметры

    Далее следуют входные параметры, перечисленные в том же порядке, что и в правой части исходной функции MATLAB.

Например, наиболее универсальная функция MATLAB:

function [Y1, Y2, ..., varargout] = foo(X1, X2, ..., varargin)

Эта функция непосредственно соответствует следующей сигнатуре Microsoft ® Visual Basic ®:

Sub foo(nargout As Long, _
        Y1 As Variant, _
        Y2 As Variant, _
        .
        .
        varargout As Variant, _
        X1 As Variant, _
        X2 As Variant, _
        .
        .
        varargin As Variant)

Для получения дополнительной информации и примеров стандартного преобразования функций MATLAB в вызовы методов COM-классов см. раздел Соглашения о вызовах.

Вариант

Все входные и выходные аргументы набраны как Variant, тип данных Visual Basic по умолчанию. Variant тип может содержать любой из базовых типов Visual Basic, массивы любого типа и ссылки на объекты. Для получения дополнительной информации о преобразовании любого базового типа в типы данных MATLAB и из них см. раздел Преобразование данных.

Как правило, в качестве аргумента метода класса можно указать любой тип Visual Basic, за исключением определяемых пользователем типов Visual Basic.

Когда вы проходите простой Variant тип в качестве выходного параметра, вызываемый метод распределяет полученные данные и освобождает исходное содержимое Variant. В этом случае достаточно измерить каждый выходной аргумент как один Variant. Когда тип объекта (например, Excel ®Range) передается как выходной параметр, ссылка на объект передается в обоих направлениях, и объект Value свойство получает данные.

Параметры ввода и вывода передачи

В следующих примерах показано, как передавать входные и выходные параметры методам класса COM-компонентов в Visual Basic.

Первый пример - функция, foo, который принимает два аргумента и возвращает один выходной аргумент. foo функция отправляет вызов метода класса, который соответствует функции MATLAB формы function y = foo(x1,x2).

Function foo(x1 As Variant, x2 As Variant) As Variant
   Dim aClass As Object
   Dim y As Variant
   
   On Error Goto Handle_Error
   Set aClass = CreateObject("mycomponent.myclass.1_0")
   Call aClass.foo(1,y,x1,x2)
   foo = y
   Exit Function
Handle_Error:
   foo = Err.Description
End Function

Второй пример переписывает foo в качестве подпрограммы:

Sub foo(Xout As Variant, X1 As Variant, X2 As Variant)
   Dim aClass As Object

   On Error Goto Handle_Error
   Set aClass = CreateObject("mycomponent.myclass.1_0")
   Call aClass.foo(1,Xout,X1,X2)
   Exit Sub
Handle_Error:
   MsgBox(Err.Description)
End Sub