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

24 Ansichten (letzte 30 Tage)
mayu
mayu am 20 Mär. 2023
Kommentiert: mayu am 20 Mär. 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の話ばかりで、どうすればこのエラーがなくなるのか分からなかったので質問させていただきました。
原因わかる方がいらっしゃいましたら、ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu App Designer を使用したアプリ開発 finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!