if文の後の合流について(質問掲示板)
投稿: fragile
投稿:2012/05/02 19:07:02(最新:2012/05/03 15:51:03)
今回の質問はifによる分岐です。
下のスクリプトを実行するとCは表示されるのですが、Dが表示されません。
流れとしては
"C"-->case文でもよさそうな所(※部)で分岐-->return-->合流-->"D"
と想定しているのですが、どこが違うのでしょうか?
ツイート
下のスクリプトを実行するとCは表示されるのですが、Dが表示されません。
流れとしては
"C"-->case文でもよさそうな所(※部)で分岐-->return-->合流-->"D"
と想定しているのですが、どこが違うのでしょうか?
def count() if getVariable("q") > 0 speak("C")#ココは表示される #※※※ここから※※※ if (getVariable("q") == 1) || (getVariable("q") == 17) return 1 elsif (getVariable("q") == 2) || (getVariable("q") == 16) return 2 elsif (getVariable("q") == 3) || (getVariable("q") == 15) return 4 elsif (getVariable("q") == 4) || (getVariable("q") == 14) return 8 else return 16 end #※※※ここまで※※※ setVariable("q", getVariable("q") + 1) speak("D")#ココは表示されない else return 0 end if getVariable("q") == 18 setVariable("q", 0) end end po = true setVariable("q", 1) txt = createText(10, 10, 780, 60) i = 0 while po i = i + 1 speak("A") setText(txt, "count() = ", count(), " , q = ", getVariable("q"), " , ", i) waitTime(30) speak("B") end
コメントする
コメントするには、ログインする必要があります。
returnを1回のみしか
記述できないため
8行目でエラーとなり
count関数が正常に実行されないまま
中断した状態でsetTextに戻ってきています。
count関数内で一度
ローカル変数に値を代入し
関数の最後でローカル変数の値を
returnにセットするようにしましょう。
デバックでエラーが出なかったので てっきり...
回答ありがとうございました。
また、defの中でも複数回記述することができます。
質問文の処理の流れについては
"C"-->case文でもよさそうな所(※部)で分岐-->return-->関数を抜ける
という形になります。
if文の分岐内容を判断中に
return文を見つけて、
def文を抜けてしまっている
ということでしょうか?
> return文を見つけて、
> def文を抜けてしまっている
> ということでしょうか?
そうです。
returnより後に何か書いてあっても、通過してない部分の処理は実行されるワケないですよね