トピック
ぴくと kanau1203

変数についてです。

誰が作ったかはぞんじあげてませんが汎用関数ライブラリというプログラムについて質問です 24行目のreturnで関数外のグローバル変数(配列)が返されてます (option strictなのに) 関数で引数に指定されていないのにグローバル変数が返されているってエラー吐くはずですよね (整理すると引数なしの関数内でグローバル変数が返されているということです) 何故これが問題ないのか教えてほしいです わかりにくくてすいません
3そうだね
プレイ済み
返信[1]
親投稿
ΖΕΧ ZEX256
そういうものです。 関数内外関係なく、何処からでも使えるのがグローバル変数です。 変数使うなら宣言してからしろ、というのがOPTION STRICTで、 そのグローバル変数がDIMで宣言していたなら使えるのです。
2そうだね
プレイ済み
返信[2]
親投稿
ぴくと kanau1203
失礼しました グローバル変数の意味を錯覚していたようでした \(^o^)/ナンテコッタ
1そうだね
プレイ済み
返信[3]
親投稿
Godot orz_127
先ずOPTION STRICTでもグローバル変数使えますよ。 OPTION STRICTは未定義の変数を許さないだけだったかと。 関数でDEFの中で宣言していない変数を使用するとグローバル変数を参照します。 その変数がちゃんと宣言してあればOKです。 COMMON DEFで宣言した関数は別スロットから呼びだすことが出来ます。(USEコマンドで使用宣言しておけばですが) これを利用するとそのスロット内だけで有効な筈のグローバル変数を別のスロットのプログラムで参照出来ることになります。
2そうだね
プレイ済み
返信[4]
親投稿
ぴくと kanau1203
ありがとうございます 改めて考えると簡単なことでした 今まで関数に5つ位の引数を渡していた自分が馬鹿みたいです
1そうだね
プレイ済み
返信[5]
親投稿
ΖΕΧ ZEX256
だからといって全てグローバル変数にはしないことだ。 グローバル変数を増やし過ぎると、訳わかんなくなる。 引数にも意味がある、その関数や命令で何を必要としているかが、中身を見なくても解りやすくなる。 メモリーをたくさん使う一時的な変数は関数や命令に入れてローカル変数で済ませば、処理を終えた時点でメモリーは開放されるし、呼び出し元の変数に影響与えず済む。 グローバル変数にはプログラム全体に関わるものや、モード的な値だけに使うといい。
2そうだね
プレイ済み
返信[6]
親投稿
ぴくと kanau1203
メモリーの解放そこまでメモリ領域や速度を求める程規模が大きいものは作ったことがないですが、意識しつつプログラムをうっていこうと思いますb あとgobodさんが仰っていた 別スロットでcommon defすることで グローバル変数を扱うスキル早速実践させていただきました^^
0そうだね
プレイ済み