루비 코드루비 범위/바인딩
def foo; "foo:function"; end
puts foo
puts foo()
foo = "foo:value"
puts foo
puts foo() # Didn't expect this to work!
의 다음 코드의 출력은
foo:function
foo:function
foo:value
foo:function
이 기괴, 나는 현재 범위에 바인딩 하나가 생각했을 것입니다 이런, 그런 것처럼 보이지는 않습니다.
추신 : Python에서 동등한 코드를 실행하면 예상 결과가 나타납니다. 즉, 문자열을 foo에 바인딩 한 후 foo()를 호출하는 마지막 명령문이 오류를 발생시킵니다.
편집 :
<function foo at 0x7fb71d912578>
foo:function
foo:value
TypeError: 'str' object is not callable
편집 2 :
출력 (수정)을 생성def foo(): return "foo:function"
print foo
print foo()
foo = "foo:value"
print foo
print foo()
:
다음 파이썬 등가 예제
루비에서는 파이썬과는 달리 주어진 심볼이 동일한 스코프 (메소드 및 인스턴스 변수와 같은)에 두 개의 바인드를 가질 수 있습니다.
괄호 사용은 Ruby에 메소드 호출을 명시 적으로 알려줍니다. – August
내 대답이 유용 했습니까? – daremkd