コメント

このコメントは、【講座?】CoRを触ってみる05~Rma...へのコメントです。

コメントの内容

Material 6858 mini akasata(投稿日:2017/02/15 21:02/15/17)
変数定義について補足です。
scene do - endの位置に変数定義がmain_music変数をupdateブロックで呼び出すことができなくなります。

# 変数定義がない場合
scene 'start' do 
  preload do
    music 'メインBGM', id: 317557
  end
  
  create do
    main_music = add_music('メインBGM')
  end
  
  update do
    # ここでエラーになる
    # createブロックのmain_music変数はupdateブロックからは見えない
    main_music.play 
  end
end


scene do - endの位置に変数定義を書くことによって、createブロックでもupdateブロックでも変数が見えるようにすることができます。言い換えると、updateブロックで呼び出さないなら必要ないということになりますね。

以下、細かい話です(^^;
興味のある方だけどうぞ。。。

変数にはスコープの中でしか見えないという決まりがあります。
スコープというのは、変数の有効範囲という意味です。
CoR(mruby)では、変数はdo - endやdef - endの中がスコープということになります。(つまり、do - endの外側からは使えません。)
思わぬバグを回避するためにも、変数はできるだけ狭いスコープで使うほうが良いですが、必要に応じて、広いスコープをもたせることによって、いろいろなところで呼び出せて便利に使うこともできます。

コメントの内容(一番最初の投稿)

Material 6858 mini akasata(投稿日:2017/02/15 21:02/15/17)
変数定義について補足です。
scene do - endの位置に変数定義がmain_music変数をupdateブロックで呼び出すことができなくなります。

# 変数定義がない場合
scene 'start' do 
  preload do
    music 'メインBGM', id: 317557
  end
  
  create do
    main_music = add_music('メインBGM')
  end
  
  update do
    # ここでエラーになる
    # createブロックのmain_music変数はupdateブロックからは見えない
    main_music.play 
  end
end


scene do - endの位置に変数定義を書くことによって、createブロックでもupdateブロックでも変数が見えるようにすることができます。言い換えると、updateブロックで呼び出さないなら必要ないということになりますね。

以下、細かい話です(^^;
興味のある方だけどうぞ。。。

変数にはスコープの中でしか見えないという決まりがあります。
スコープというのは、変数の有効範囲という意味です。
CoR(mruby)では、変数はdo - endやdef - endの中がスコープということになります。(つまり、do - endの外側からは使えません。)
思わぬバグを回避するためにも、変数はできるだけ狭いスコープで使うほうが良いですが、必要に応じて、広いスコープをもたせることによって、いろいろなところで呼び出せて便利に使うこともできます。