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

22 vues (au cours des 30 derniers jours)
mayu
mayu le 20 Mar 2023
Commenté : mayu le 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の話ばかりで、どうすればこのエラーがなくなるのか分からなかったので質問させていただきました。
原因わかる方がいらっしゃいましたら、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur App Designer を使用したアプリ開発 dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!