HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0214
こんとんモジュール内の変数の初期化2解決


こんとん

リンク

2015/2/14(Sat) 14:29:00|NO.67407

モジュール空間の新規命令・関数を呼び出す度にモジュール空間内の変数を初期化する方法はありませんか?

例としてモジュール内の新規関数select_keyを呼び出し、モジュール内のm_flagという変数を変化させて、
最終的にモジュール内のm_flagは2という値でグローバルのmenu_flagに戻り値を返しました。

その後、再度同じモジュールのselect_keyの関数を呼び出しましたが、
m_flagは2のままで初期化(最初に呼び出した時は初期値0)されていませんでした。

同様の関数をモジュール内ではなくグローバルに置くか、モジュール空間の関数に飛んだ直後に

m_flag=menu_flag@ ← (select_keyを呼び出す前にグローバルのmenu_flagに0を代入させてます)

など、直前のグローバルの変数を代入して初期化すれば正常に動くのですが
できればモジュール内の関数を呼び出す度に上のようなやり方をせずに変数を初期化したいです

メニュー画面などの初期位置設定で使おうと思います



この記事に返信する


tds12

リンク

2015/2/14(Sat) 16:11:24|NO.67409

実際のスクリプトがどのように書かれているのかわからないので、
的外れかもしれませんが…

#deffuncの行の最後尾に「,local m_flag」とつけると良いかもしれません。
ただし、そのモジュールの他の命令でm_flagという名の変数は使えなくなります。

#module #deffunc f local a mes a a = 3 return #global f f



こんとん

リンク

2015/2/16(Mon) 16:09:32|NO.67423

とりあえずはm_flag=menu_flag@という形で関数に飛んだ直後に初期化することにしました。
ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.