2つの関数の、相互呼びだしの方法

投稿者:Material 305033 1 mini cfm_ 投稿日:2016/08/04 20:57

もともと、入力取得をした際(イベント発生時)に実行する関数内で、
もう一度入力を取得したい、という目的で考えた結果、考えた方法です。

相互呼び出しをする良い例が思いつかなくて、よくわからないスクリプトになりましたが、みていってほしいです。

def testA()
  def testB()
    #cnt<5なら、"B"を追加, count+1, testA()
    if getVariable("count")<5
      setVariable("count",getVariable("count")+1)
      setVariable("text",getVariable("text")+"B")
      testA()
    end
  end
  #start==trueなら関数を実行しない。(testB関数の読み込み用)
  if getVariable("start",true) then return false;end
  #cnt<5なら、"A"を追加, count+1, testB()
  if getVariable("count")<5
    setVariable("count",getVariable("count")+1)
    setVariable("text",getVariable("text")+"A")
    testB()
  end
end

#testB関数を読み込む
setVariable("start",true)
testA()
setVariable("start",false)

#testA()の実行
setVariable("count",0)
setVariable("text","")
testA() #結果:ABABA
speak(getVariable("text"))

#testB()の実行
setVariable("count",0)
setVariable("text","")
testB() #結果:BABAB
speak(getVariable("text"))



追記(重要)

#testB関数を読み込む
setVariable("start",true)
testA()
setVariable("start",false)

この部分は、今回の例では記述しなくても正常に動きますが、testA()を使う前にtestB()を使用した場合、「def testB()」の行を一度も通り過ぎていない、つまりtestB関数を読み込んでいないため、testB()の実行はエラー(関数が存在しません)となります。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。