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