質問
これには簡単な答えがあると確信しています。見つけられないようです。 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)
所属していません StackOverflow