トピック

DEF内のVARの目的

DEFでなんとなくVARを使っている私ですが、 VARはどのような役割を果たすのでしょうか? 実は知らずにいた者でして…
1そうだね
プレイ済み
返信[1]
親投稿
moh6an moh6an
DEFから抜けるとその変数は開放されるよ・・・・
4そうだね
プレイ済み
返信[2]
親投稿
moh6an moh6an
・・・・だったような気がする・・・
2そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
def内でvarで宣言した変数は、そのdef内だけで有効になります(ローカル変数という)。 defの外で同じ名前の変数を使っていたとしても、それとは別物になる。 var x=100 'def外の変数はグローバル変数 def f ? x 'これはグローバル変数を参照するので100を表示 var x 'ローカル変数を宣言、以下 def 終わりまで x という変数はこのローカル変数のこと ? x ' ローカル変数は 0 に初期化されるので0を表示 end てな感じ。ローカル変数を使えば、グローバル変数を意図せず変化させてしまう危惧がなくなります。 def f(x) のように仮引数で宣言した変数もローカル変数になります。 ただし実引数として配列か文字列を渡した場合はちょっと注意が必要。(参照渡しということになるので・・・これは結構高度な概念)
6そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
解放されるっていうのは メモリのことかな…? 同じ名前のグローバル変数の有無に 関わらないローカル変数を使うときに 使う。 おちゃめ氏がよく出すような、 どんなプログラムに入れても 変数名被りエラーが起きないような 自作関数には持ってこい。 でも、VARを入れると いちいち宣言してる訳だから その分処理速度は落ちるっぽい。
2そうだね
プレイ済み
返信[5]
親投稿
ツララ LongIceSword
別にVAR命令を使わなくても新しい名前の変数が出て来た時には暗黙の宣言をしてるはずなので(メモリ確保?)、そんなに処理速度って変わらない気もするんですけど実際のところどうなんでしょうね? 検証してみますか。
1そうだね
プレイ済み
返信[6]
親投稿
・DEFの中でVAR宣言しなかったらグローバル変数が使われる ・DEFの中でVAR宣言するとDEFの中でしか使えない(ローカル変数) ・DEFの外の宣言(グローバル変数)と変数名が同じでも大丈夫 FOR X=0 TO 10 みたいなループの中で、DEFの中でもFORでXを使う場合、DEFの外のXが参照されておかしいことになっちゃうので DEFの中でVAR Xとしてローカル変数にしておかしな動きにしないようにするのが便利な使い方です。 (特に短い名前だとどこかで変数名同じの使っちゃうことあるからおかしくなる)
2そうだね
プレイ済み
返信[7]
親投稿
ちなみにメモリの解放っていう話だと、たぶんプチコンはDEFの中も含めてローカルもグローバルも変数はメモリ上にずっと領域を持っているので、DEF用の変数が余計に確保されているだけな感じ。 他の言語のローカルと同じ感じで、DEFに入ると0初期化されて(これは言語によりけり)、DEFの外からはアクセスできないので解放されるように見えている感じ。 DEF関数が1つのやりたいことを処理するなら、本来はローカル変数だけを使って処理してあげるのが良いけど、プチコンというかBASICはわりとグローバル変数をアクセスできたり、グローバル前提なのもあるので、使い方次第ってところです。 ※DEFで処理を完結させるのは「モジュール化」の考え
5そうだね
プレイ済み
返信[8]
親投稿
そういうことか…!理解しました。 ありがとうございました。
0そうだね
プレイ済み