문제

나는 이것에 대한 간단한 대답이 있다고 확신합니다. 나는 그것을 찾을 수없는 것 같다. 루비에서 중첩 된 기능을 만들었고 내부 기능 내부의 외부 기능에서 변수에 액세스하는 데 어려움을 겪고있었습니다.

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top