プロパティ内で定義した配列を、メソッド内で使おうとしたら、「名前 app.~ を解決できません。」のエラーが出る。
24 ビュー (過去 30 日間)
古いコメントを表示
タイトル通りなのですが、
App Designerを使用しており、プロパティ内で配列定義したものを、メソッド内で定義してる関数内に呼び出して使おうとしたら、
「名前 app.~ を解決できません。」のエラーが出て使えませんでした。
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 件のコメント
採用された回答
Kojiro Saito
2023 年 3 月 20 日
プライベート関数Fnc1にappのオブジェクトが渡されていないのが原因です。
function Fnc1(app,i2cboard)
に変更して、呼び出す際に
Fnc1(app,i2cboard)
のようにappを入れてみてください。
2 件のコメント
Atsushi Ueno
2023 年 3 月 20 日
移動済み: Atsushi Ueno
2023 年 3 月 20 日
> コールバック関数内で呼び出す場合には、エラーは出ず使えていました。
イベントの発生を受けてコールバック関数を呼び出す人は、app(どのオブジェクトで発生したか)を引数として渡します。それを受け取るのが関数の1番目の引数です。
> メソッド内では使えないルールになっているとかでしょうか
いいえ。呼び出したいメソッドの1番目の引数に対象のオブジェクトハンドルを渡さないとアクセス出来ないからです。他の多数の言語ではオブジェクト自身を指すハンドルの記述を省略できるのですが、MATLABではこれを省略する事が許されません。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で App Designer を使用したアプリ開発 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!