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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0416
harvestif文のネスト5解決


harvest

リンク

2007/4/16(Mon) 14:37:07|NO.7494

if文の記述の仕方によってネストの扱いが変わるのかどうかで悩んでいます。
例えば、サブルーチンの中で、


if a=1 { chdir "test" return }

と記述した時、ifの括弧内の3行目にあるreturnで
現在のサブルーチンから抜けることはできるのでしょうか?



この記事に返信する


KENTA

リンク

2007/4/16(Mon) 14:56:04|NO.7495

{}の中では、抜けることができません。
抜けられるのは、gotoかgosubです。
returnで抜けるとすれば、

if a=1 :chdir "test" :return
と記述します。



水野(外出先)

リンク

2007/4/16(Mon) 15:09:01|NO.7496

KENTAさん、できましたよ。
以下、ソース

randomize do gosub *SubRoutinue wait 1 until stat=1 stop *SubRoutinue rando=rnd(256) mes "SubRoutinue" if rando<=128 {return 1} ;問題のreturn文その1 if rando>=128 {return -1} ;問題のreturn文その2 return 0 /*実行結果! エラーはでずに、ランダムな数の "SubRoutinue"が表示された。*/

{}の中では抜けられないという情報は、どこで仕入れたの?
ソース組んでから発言した方が踏ん切りがつくのに・・・

無限ループで試すなら、
doをrepeat(パラメーター、無し)に、
untilをloopに変えて試してください。



水野(外出先)

リンク

2007/4/16(Mon) 15:14:36|NO.7497

追伸

returnで戻る限りはネストを心配する必要がないので、
gosubで飛んだら手短にを心得ておくと確実でしょう。



KENTA

リンク

2007/4/16(Mon) 15:25:24|NO.7498

すいません。
つい、勘違いしてしまって!



harvest

リンク

2007/4/16(Mon) 20:35:11|NO.7513

水野さん、KENTAさん、返答ありがとうございます。
お二方のアドバイスを参考に構文を再現したところ、
正常にサブルーチンを抜けることが確認できました。
ありがとうございました。



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