HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
1024
Y_repeatrepeat中にreturn6解決


Y_repeat

リンク

2025/10/24(Fri) 20:10:02|NO.104119

プログラミングがそろそろ完成の時にバグがあり
結局repeat中にreturnしてました😭

repeat中のreturnは後から顔を出すバグなので
エラー扱いにしちゃっていいんじゃないすかね
それか警告扱いに😅



この記事に返信する


リンク

2025/10/24(Fri) 23:12:43|NO.104122

え、これだめなんですか?
特に気にしてなかったので普通にやってるかも。
GOSUBとかGOTOとか飛ぶの全部禁止だったりしますか?
後、FORの仕様も気になるところ…。



雪月夜

リンク

2025/10/25(Sat) 10:09:06|NO.104127

検証したところrepeatはどちらも駄目みたいですね
forなら大丈夫そうです
mes""+looplev
gosub *methodrepeatgosub mes""+looplev gosub *methodforgosub mes""+looplev goto *methodrepeatgoto *methodrepeatgotores mes""+looplev goto *methodforgoto *methodforgotores mes""+looplev stop *methodrepeatgosub repeat return loop return *methodforgosub for x,0,10,1 return next return *methodrepeatgoto repeat goto *methodrepeatgotores loop stop *methodforgoto for x,0,10,1 goto *methodforgotores next stop



リンク

2025/10/25(Sat) 14:09:48|NO.104133

検証お疲れ様です。
つまりあれですか、rpeatだと途中で飛ぶと、
ネストレベルがそのまま次に引き継がれる仕様って事ですか?
それは知らないと大変ですね。
どこかに明記してありましたっけ?



Y_repeat

リンク

2025/10/25(Sat) 15:26:15|NO.104134

結構有名な仕様っすね
わかっているのにやってしまってました😅

やり場のないイライラで
全くもって恥ずかしいです😅



zakki

リンク

2025/10/25(Sat) 15:45:19|NO.104135

禁止というかスタックが溜まるので、スタック溢れて落ちたり他言語知ってると直観的じゃない挙動になったりします。

HSPだとdeffuncっていう関数のエントリーポイントの行があるだけで、次の行はただの文で
コンパイラ的にreturnがループ内か静的に調べるのは微妙に面倒くさいか誤判定ありそうな気がします。

if文みたいにに、repeat 10 {} loop や defun foo {} 方式を強制にしたり、
構造化BASICみたいにdeffunc foo ... end deffunc、sub foo ... end sub方式にしたりすると、
素直ですが別物になっちゃいますね。

gotoやlooplevで変則挙動させてるプログラムやHSPROUTINEを触ってるプラグインには泣いてもらうことにすれば、
cmdfunc_gosub/code_callfuncでlooplevを保存して、cmdfunc_returnで巻き戻すのでスタック溢れないみたいな対応は
割と簡単そうな気がします。


goto *main *label1 repeat 10 mes "B " + looplev + " " + cnt if cnt == 3: return loop goto *main repeat *main pos 0, 0 mes "A1 " + looplev wait 10 gosub *label1 mes "A2 " + looplev if looplev > 0: loop



Y_repeat

リンク

2025/10/25(Sat) 17:13:54|NO.104137

何年か前だと思うんすけど
onitamaさんも対応するとおっしゃってた気がしますし
少し文法変わるなら HSP4で対応するのでしょうか



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.104119への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2025(c) All rights reserved.