调用类实例的方法
标准映射技术
创建类实例后,您可以调用类方法来访问封装的 MATLAB® 函数。MATLAB Compiler SDK™ 产品使用标准技术将原始 MATLAB 函数语法映射到方法的参量列表。该标准映射技术如下:
nargout当方法具有输出参量时,第一个参量始终是
nargout,其类型为Long。该输入参数将正常的 MATLABnargout参数传递给封装的函数,并指定请求多少个输出。没有输出参量的方法不会传递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 用户定义类型 (UDT) 除外。
当您将简单的 Variant 类型作为输出参数传递时,被调用的方法会分配接收到的数据并释放 Variant 的原始内容。在这种情况下,将每个输出参量设置为单个 Variant 就足够了。当对象类型(如 Excel® Range)作为输出参数传递时,对象引用会在两个方向上传递,并且对象的 Value 属性会接收数据。
传递输入和输出参数
下面的示例说明如何在 Visual Basic 中将输入和输出参数传递给 COM 组件类方法。
第一个示例是一个函数 foo,它接受两个参量并返回一个输出参量。foo 函数会调用一个类方法,该方法对应于形式为 function y = foo(x1,x2) 的 MATLAB 函数。
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