プロパティ内で定義した配列を、メソッド内で使おうとしたら、「名前 app.~ を解決できません。」のエラーが出る。
조회 수: 22 (최근 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!