投稿
ネタバレ
ish owlis1
関数の返却値が複数の場合、ローカル変数を返却するとtype mismatchが発生するのは仕様なのかなぁ
1そうだね
プレイ済み
返信[1]
親投稿
ish owlis1
あ type mismatchじゃなくてDuplicate variableか。
0そうだね
プレイ済み
返信[2]
親投稿
けい kei0baisoku
「OUTは必ず関数内で値を初期化しないとエラーになる」というのを以前チラッと耳にしました。 FUNC1とFUNC2はそれではないでしょうか?
0そうだね
プレイ済み
返信[3]
親投稿
それは返り値うんぬんは関係ありません。 関数の宣言で引数を書くと、その時点でその変数は”定義”されたことになります。 そのうえで、さらにVARで再定義してしまうと当然ながらDuplicate variableになってしまいます。 DEF FUNC A VAR A END これだけでDuplicateです。(Aを2回定義してしまっているため)
0そうだね
プレイ済み
返信[4]
親投稿
ish owlis1
>けいさん 情報ありがとうございます。 ふむ、「OUTを使用する際」限定で、返却値のルールが変わる、と。なるほど、使うときと使わないときの結果が違うわけか。 ただ「初期化する必要が有る」だけが、追加されるルールではないかも、ですね。 個人的には、func2の書き方で、ローカル変数は初期化して欲しい所です。
0そうだね
プレイ済み
返信[5]
親投稿
ish owlis1
>るるるきゅ~さん すみません、タイミング悪くコメント読み飛ばしてしましました。 そして、ああ、なるほど、と。 しかし、反省すべき点は、まずはエラーメッセージきちんと把握すべき所でした。
1そうだね
プレイ済み
返信[6]
親投稿
けい kei0baisoku
>ishさん あ、すみません。二重定義のエラーなので、原因はるるるきゅ~さんのおっしゃる通りですね。 私の方のは、返り値のルールが変わる訳ではなく「OUT は初期化が義務付けられている」と聞きました。 ………が、自分で確かめた訳ではないのでもし勘違いでしたらすみません(´ω`)
0そうだね
プレイ済み
返信[7]
親投稿
まあもう結論は出てますが、たしかOUTの変数は用意されているので定義の必要はなく(なので再定義でエラーのるるるきゅ〜さん説)、ただその用意されている変数に対して値を入れて返さないとエラー(けいさんのOUTは初期化が義務づけられている説)って感じだったと思います。
0そうだね
プレイ済み
返信[8]
親投稿
ish owlis1
>けいさん いえいえ、情報ありがたいです。 間違ってると恥ずかしいですが「OUT初期化の義務付け」が由来のエラーと言え…ます? 。 'type mismatch発生 DEF func OUT A END '問題無し DEF func OUT A A=0 END DEF func RETURN A END
0そうだね
プレイ済み
返信[9]
親投稿
ish owlis1
>でんぺんさん そうですね、「Duplicate variable」の件は解決しました。 あと「OUT初期化の義務付け」は、挙動から想像するしかない状態なのかなぁと。
0そうだね
プレイ済み
返信[10]
親投稿
そうですね〜。ただ両方ともわかってしまえば難しくないしたいした問題ではないと考えています。 ただそれ以前にDEFに関しては、もともとの資料(命令表など)の説明が少なくてわかりにくいんですよね。色々試してわかるみたいな感じになっちゃってると思います。
0そうだね
プレイ済み
返信[11]
親投稿
けい kei0baisoku
>ishさん あ、それです、一つ目のエラー。多分私が見たやつです。 初期化の義務があるのは納得できるとして、メッセージが「型が合わない」はさすがにそれでは分からないですよね(´ω`) 一度間違えて覚えるしかなさそうですね。 そう言えば、プチコン買ってhello,worldの次にやったのが、サブルーチンと関数の書式と機能の検証でした。二日目はそれで終わりました………
0そうだね
プレイ済み
返信[12]
親投稿
otta777 otta777a
>けいさん プチコン3号ってエラーメッセージの数が少ないんですよ。 昔のBASICだとエラーメッセージが細かく分けられていたので 原因を特定しやすかったんですがプチコン3号ではあまり こまかく分けられていないように感じます。 この場合は本来ならエラーメッセージをUndefined variableと すべきところでしょうが、現状はType mismatchが出た場合には こういう原因もあり得ると覚えておくしかないですね。
0そうだね
プレイ済み
返信[13]
親投稿
けい kei0baisoku
>otta777さん BASICだからエラーの数が少ないのだと思ってました。意外(°O°) プチコン3号の事情だったのですね。 それなら、アップデートでエラーの種類や内容が改良される可能性も無きにしもあらずですかね。 この場合ですと、定義していないわけではないので正確にインフォするなら Uninitialized OUT variable とかでしょうか。
0そうだね
プレイ済み