プロパティ内で定義した配列を、メソッド内で使おうとしたら、「名前 app.~ を解決できません。」のエラーが出る。
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
タイトル通りなのですが、
App Designerを使用しており、プロパティ内で配列定義したものを、メソッド内で定義してる関数内に呼び出して使おうとしたら、
「名前 app.~ を解決できません。」のエラーが出て使えませんでした。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1330120/image.png)
properties (Access = private)
array_addr = ["01","02","03","04","05","06",・・・] % 色々な場所で使いたいアドレス情報の配列array_addrを定義
end
methods (Access = private)
function Fnc1(~,i2cboard) % 下のコールバックで使いまわす予定の関数Fnc1を定義
・・・
writeRegister(i2cboard,hex2dec(app.array_addr(7)),hex2dec(y1),'uint16');
end
end
コールバック関数内で呼び出す場合には、エラーは出ず使えていました。
メソッド内では使えないルールになっているとかでしょうか。
名前解決についてはググってもDNSの話ばかりで、どうすればこのエラーがなくなるのか分からなかったので質問させていただきました。
原因わかる方がいらっしゃいましたら、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
0 Kommentare
Akzeptierte Antwort
Kojiro Saito
am 20 Mär. 2023
プライベート関数Fnc1にappのオブジェクトが渡されていないのが原因です。
function Fnc1(app,i2cboard)
に変更して、呼び出す際に
Fnc1(app,i2cboard)
のようにappを入れてみてください。
2 Kommentare
Atsushi Ueno
am 20 Mär. 2023
Verschoben: Atsushi Ueno
am 20 Mär. 2023
> コールバック関数内で呼び出す場合には、エラーは出ず使えていました。
イベントの発生を受けてコールバック関数を呼び出す人は、app(どのオブジェクトで発生したか)を引数として渡します。それを受け取るのが関数の1番目の引数です。
> メソッド内では使えないルールになっているとかでしょうか
いいえ。呼び出したいメソッドの1番目の引数に対象のオブジェクトハンドルを渡さないとアクセス出来ないからです。他の多数の言語ではオブジェクト自身を指すハンドルの記述を省略できるのですが、MATLABではこれを省略する事が許されません。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu App Designer を使用したアプリ開発 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!