Main Content

matlab.lang.correction.ConvertToFunctionNotationCorrection クラス

名前空間: matlab.lang.correction

関数表記に変換してエラーを修正

説明

ConvertToFunctionNotationCorrection オブジェクトは、ドット表記を使用して呼び出すべきではないメソッドをもつクラスで使用します。メソッドによってスローされる MException オブジェクトは、ConvertToFunctionNotationCorrection のインスタンスを使用して、メソッドを呼び出すためにドット表記を関数表記構文に変換することを提案できます。

作成

説明

cfnc = matlab.lang.correction.ConvertToFunctionNotationCorrection(method) は修正を作成して、MException オブジェクトをスローした method を呼び出すためにドット表記を関数表記構文に変換するよう提案します。

入力引数

すべて展開する

ドット表記を使用して誤って呼び出されたメソッドの名前。string スカラーまたは文字ベクトルとして指定します。method は有効な MATLAB® 識別子でなければなりません。有効な MATLAB 識別子は、英数字 (A ~ Z、a ~ z、0 ~ 9) とアンダースコアで構成される string スカラーまたは文字ベクトルであり、最初の文字は英字で、テキストの長さは namelengthmax 以下です。

すべて折りたたむ

ドット表記を使用して呼び出すべきではないメソッドをもつクラスを作成します。クラスのメソッドがドット表記を使用して呼び出されるたびに、関数表記構文を提案します。

現在のフォルダーで、handle スーパークラスをサブクラス化することにより、クラス myClass を作成します。methods ブロック内で、subsref をオーバーロードして、myClass オブジェクトの呼び出しメソッドを関数表記構文に制限します。メソッドがドット表記を使用して呼び出されたときに、推奨される構文をエラー メッセージに追加するには、subsref メソッド内で ConvertToFunctionNotationCorrection のインスタンスを使用します。

classdef myClass < handle
    properties
        myProperty
    end
    methods (Hidden)
        function ref = subsref(obj, idx)
            firstSubs = idx(1).subs;
            if idx(1).type ~= "." || any(string(firstSubs) == properties(obj))
                % Parentheses indexing, brace indexing, or property indexing
                try
                    ref = builtin('subsref', obj, idx);
                    return
                catch me
                end
            elseif any(string(firstSubs) == methods(obj))
                % Valid method called using dot notation
                me = MException('myClass:useFunctionForm', ...
                    'Use function syntax to call the ''%s'' method.', ...
                    firstSubs);
                cfnc = matlab.lang.correction.ConvertToFunctionNotationCorrection(firstSubs);
                me = me.addCorrection(cfnc);
            else
                % Invalid method, property, or field called using dot notation
                me = MException('MATLAB:noSuchMethodOrField', ...
                    'Unrecognized method, property, or field ''%s'' for class ''%s''.', ...
                    firstSubs, class(obj));
            end
            throwAsCaller(me)
        end
    end
end

myClass のインスタンスを作成し、ドット表記を使用して isvalid メソッドを呼び出します。isvalid は、myClass が自身のスーパークラスから継承するメソッドの 1 つです。

myObject = myClass;
myObject.isvalid
Use function syntax to call the 'isvalid' method.

Did you mean:
>> isvalid(myObject)

バージョン履歴

R2019b で導入