matlab.lang.correction.ConvertToFunctionNotationCorrection クラス
名前空間: matlab.lang.correction
関数表記に変換してエラーを修正
説明
ConvertToFunctionNotationCorrection
オブジェクトは、ドット表記を使用して呼び出すべきではないメソッドをもつクラスで使用します。メソッドによってスローされる MException
オブジェクトは、ConvertToFunctionNotationCorrection
のインスタンスを使用して、メソッドを呼び出すためにドット表記を関数表記構文に変換することを提案できます。
作成
説明
入力引数
method
— メソッドの名前
string スカラー | 文字ベクトル
ドット表記を使用して誤って呼び出されたメソッドの名前。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 で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)