ローカル変数のスコープ

ローカル変数のスコープについて調べたのでメモ

ローカル変数のスコープは、変数が宣言されたブロック、メソッド定義、クラス定義、モジュール定義の終わりまで。 これらの中でブロックでは既存のローカル変数のスコープを引き継ぎ、 メソッド定義、クラス定義、モジュール定義では引き継がない。

class Sample
  var1 = 2
  def sample 
    # p "var1 : #{var1}" ### undefined local variable エラー 

    var1 = 1

    clo = lambda do |n|
      puts var1 + n
    end

    return clo
  end
end

var1 = 0
clo = Sample.new.sample
clo.call(3) # => 4