クラス インスタンスのメソッドの呼び出し
標準マッピング手法
クラス インスタンスを作成した後、クラス メソッドを呼び出して、カプセル化された MATLAB® 関数にアクセスできます。MATLAB Compiler SDK™ 製品は標準手法を使用して、元の MATLAB 関数構文をメソッドの引数リストにマッピングします。標準マッピング手法は以下のとおりです。
nargout
メソッドに出力引数がある場合、最初の引数は常に
Long
型のnargout
です。この入力パラメーターは通常の 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 クラス メソッド呼び出しへの標準マッピングの詳細と例については、Calling Conventionsを参照してください。
Variant
すべての入力引数および出力引数は Visual Basic の既定のデータ型である Variant
型になります。Variant
型は Visual Basic の任意の基本型、任意の型の配列およびオブジェクト参照を保持できます。任意の基本型と MATLAB データ型間の変換の詳細については、データ変換を参照してください。
一般的に、Visual Basic ユーザー定義型 (UDT) を例外として、任意の Visual Basic 型をクラス メソッドの引数として指定することができます。
単純な Variant
型を出力パラメーターとして渡すと、呼び出されたメソッドは受け取ったデータを割り当て、Variant
の元の内容を解放します。この場合、それぞれの出力引数を単一の Variant
として設定すれば十分です。オブジェクト型 (Excel® Range
など) が出力パラメーターとして渡される場合、オブジェクト参照が双方向に渡され、オブジェクトの Value
プロパティがデータを受け取ります。
入出力パラメーターを渡す
以下の例では、Visual Basic で入出力パラメーターを COM コンポーネント クラス メソッドに渡す方法を示します。
最初の例は、2 つの引数を受け取り、1 つの出力引数を返す関数 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
2 番目の例では、関数 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