投稿
DEFの関数定義で引っ掛かったローカル変数の罠。解説はコメントで。
5そうだね
プレイ済み
返信[1]
親投稿
暗黙のうちにグローバル変数として I が定義されていたので、関数内でもそれを使ってしまっていたというもの。 分かってしまえば単純な罠だった。
2そうだね
プレイ済み
返信[2]
親投稿
この罠を回避するには、メイン処理も関数化してしまうと良いです。 グローバル変数は便利な反面バグも産みやすいので、メイン処理で使う変数も原則ローカル変数にして、グローバル変数の使いどころを絞った方が罠にハマりにくいと思います。 …まあ、MAIN関数とか何だかBASICらしさが減ってしまう感があるし、短いプログラムでまで、そうしなくても良いとも思いますが。
3そうだね
プレイ済み
返信[3]
親投稿
おかっぺ Japanese_WASABI
試して無かったけど、DEF内でもグローバル変数が書き替えられてしまうと言う事ですよね。勉強になりました。 これは、ライブラリが作りにくい仕様だなあ・・
1そうだね
プレイ済み
返信[4]
親投稿
関数内でもグローバル変数を参照・書き換えしたいケースもあるので仕方ないとは思うのですが、問題なのは VALUE=1 DEF FUNC VER VALUE  : END と、関数内で明示的にローカル変数宣言をしようとしても、グローバル変数として既に定義されている変数名を使うと Duplicate variable エラーになってしまう点に思えます。 グローバル変数と同名のローカル変数が作れれば、不便さはなくなるかな、と。
0そうだね
プレイ済み
返信[5]
親投稿
おかっぺ Japanese_WASABI
整理して確認したわけじゃ無いので勘違いしてたら、申し訳無いのですが、もしかしたら、プログラムスロットが違うと、同一名でも別定義となっている気がします。 ライブラリの件は解決かも。スマイルブームさんグッジョブ!
1そうだね
プレイ済み