質問

これには簡単な答えがあると確信しています。見つけられないようです。 Rubyでネストされた関数を作成しましたが、内部関数内の外部関数から変数にアクセスするのに問題がありました:

def foo(x)
  def bar
    puts x
  end
  bar
  42
end

foo(5)

I:get: NameError:undefined local variable or method x 'for main:Object`

類似のPythonコードが機能します:

def foo(x):
  def bar():
    print x
  bar()
  return 42

foo(5)

では、Rubyで同じことを行うにはどうすればよいですか

役に立ちましたか?

解決

私が知る限り、関数内で名前付き関数を定義しても、ローカル変数にアクセスすることはできません。

代わりにできることは、Procを使用することです:

def foo(x)
  bar = lambda do
    puts x
  end
  bar.call
  42
end

foo(5)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top