class定義などなど メモ †クラス定義 基本形 †通常のファイル同様 .m ファイル形式でOK. classdef ClassName properties foobar hogehoge end properties (Constant) g = 9.81 c = 299792458 end %% methods methods %% constructor function obj = ClassName(val) obj.foobar = val end function varargout = disphoge(obj,arg2,arg3) disp(obj.hogehoge) disp(arg2+arg3) end end %% static methods methods (Static) function out = something(arg1,arg2) out = arg1 + arg2 end end end obj はこのクラスによって生成されたオブジェクト(インスタンス)のことを指す. コンストラクタ †クラス名と同名の function を作成することはできない. function obj = ClassName(val) obj.foobar = val end インスタンス生成 †直下にあるかパスが通っている状態で A = ClassName; % インスタンス生成 A.foobar = hogehoge; % プロパティ値入力 他の言語でよくあるような()は付けない. A = ClassName(val) とする. メソッド呼び出し †上記の disphoge(obj,arg2,arg3) を使うときは, A.disphoge(arg2,arg3) または disphoge(A,arg2,arg3) のようにする.個人的には前者を推奨する. varargin はどうなる? †varargin は,通常の function と同じように使えるが, A.myfunction(arg2,arg3) とすると, varargin{1} は A,varargin{2} は arg2 となる. myfunction(A,arg2,arg3) と同じ扱いになる. % クラス定義のファイル内で書く methods function myfunction(varargin) % assign obj = varargin{1} arg2 = varargin{2} arg3 = varargin{3} % main .... ... end end % 実行 A = ClassName; A.myfunction(arg2,arg3) 参考 †MathWorks の公式ページ. |