プロパティ内で定義し​た配列を、メソッド内​で使おうとしたら、「​名前 app.~ を解決できません。」のエラーが出る。

22 views (last 30 days)
mayu
mayu on 20 Mar 2023
Commented: mayu on 20 Mar 2023
タイトル通りなのですが、
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の話ばかりで、どうすればこのエラーがなくなるのか分からなかったので質問させていただきました。
原因わかる方がいらっしゃいましたら、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

Accepted Answer

Kojiro Saito
Kojiro Saito on 20 Mar 2023
プライベート関数Fnc1appのオブジェクトが渡されていないのが原因です。
function Fnc1(app,i2cboard)
に変更して、呼び出す際に
Fnc1(app,i2cboard)
のようにappを入れてみてください。
  2 Comments
Atsushi Ueno
Atsushi Ueno on 20 Mar 2023
Moved: Atsushi Ueno on 20 Mar 2023
> コールバック関数内で呼び出す場合には、エラーは出ず使えていました。
イベントの発生を受けてコールバック関数を呼び出す人は、app(どのオブジェクトで発生したか)を引数として渡します。それを受け取るのが関数の1番目の引数です。
> メソッド内では使えないルールになっているとかでしょうか
いいえ。呼び出したいメソッドの1番目の引数に対象のオブジェクトハンドルを渡さないとアクセス出来ないからです。他の多数の言語ではオブジェクト自身を指すハンドルの記述を省略できるのですが、MATLABではこれを省略する事が許されません。
mayu
mayu on 20 Mar 2023
最初、app.array_addr(7)を使ってなかったからか、appのところ~になってましたが、appにしたら出来ました、
お二人方とも、ご教示いただきましてありがとうございました!m(__)m

Sign in to comment.

More Answers (0)

Categories

Find more on App Designer を使用したアプリ開発 in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!