루비 중첩 된 기능에서 외부 변수에 액세스합니다
문제
나는 이것에 대한 간단한 대답이 있다고 확신합니다. 나는 그것을 찾을 수없는 것 같다. 루비에서 중첩 된 기능을 만들었고 내부 기능 내부의 외부 기능에서 변수에 액세스하는 데 어려움을 겪고있었습니다.
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
나는 얻다: NameError: undefined local variable or method
메인의 경우 x ': Object`
유사한 파이썬 코드는 작동합니다.
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
루비에서 어떻게 같은 일을하나요?
해결책
내가 아는 한, 함수 내에서 명명 된 함수를 정의해도 로컬 변수에 액세스 할 수는 없습니다.
대신 할 수있는 일은 Proc를 사용하는 것입니다.
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
제휴하지 않습니다 StackOverflow