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