RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold基礎5
# ■スコープ定義を何回もやる
# → 初めに定義されてた場所がスコープの範囲になる。
#------------------------------------------------------------

#--------------------------------------------------
# 未定義を参照
#------------------------------
10.times do | i |
  num = i
end

#puts num  # :in `
': undefined local variable or method `num' for main:Object (NameError)


#--------------------------------------------------
# 中で再定義したら
#------------------------------
num = 100
1.times do | i |
  num = 10
end

puts num  #=> 10


#----------
num0 = 100
4.times do | i |

  #----------
  num1 = i  # 定義なのでエラーにならない

  #----------
#  num2 = num2 + i  # 右辺で未定義を参照しているのでエラー

  #----------
  num0 += i  # 外で定義済みのを参照しているのでエラーにならない

end

puts num0  #=> 106
#puts num1  # スコープ外なのでエラー

#------------------------------------------------------------
# END
#------------------------------------------------------------