1

シナリオがあります

func1 do 
  x='abc'
  func2 do
    puts x
  end
end

このため、x = nil が得られます。なぜそうなのか、内部ブロックで x などの外部変数にアクセスする方法。

4

1 に答える 1

1

「abc」は、func1 と func2 が渡したブロックを実行する場合 (yield または call) にのみ取得されます。

例をご覧ください

def func1
end

def func2
end

func1 do
  x = "Hello World"
  func2 do
    puts x
  end
end
#=> nil

def func3
  yield
end

def func4
  yield
end

func3 do
  x = "Hello World"
  func4 do
    puts x
  end
end
#=> Hello World
于 2013-08-24T09:55:40.670 に答える