Is ruby pass by reference or value?을 읽은 후에 나는 많은 것을 배웠지 만, 내가 읽는 것보다 더 많은 질문이 남아있다.이 Ruby 예제에서 값 대 전달에 대한 이해
는 다음과 같은 예를 생각해 출력 여기 Ruby is pass-by-value
이 어떻게 작동하는지 해부 내 시도이다
def foo(bar)
bar = 'reference'
end
baz = 'value'
foo(baz)
puts "Ruby is pass-by-#{baz}"
:
첫째, 전역 baz
에이 값을 가진다 value
.
이제 foo
은 매개 변수를 전달하며, 사용자가 전달한 매개 변수는 local
수준입니다. 우리가 baz
전달할 때
그러므로 reference
같다 ANOTHER baz
가 있지만 그것이 value
인쇄하는 글로벌 레벨에두고 때, 결과적으로 지방 수준에있다. 내가 여기 .replace
방법은 글로벌 baz
을 변경 않는 사실 위에서 말한 경우
지금 또 다른 예
def foo(bar)
bar.replace 'reference'
end
baz = 'value'
foo(baz)
puts "Ruby is pass-by-#{baz}"
출력
Ruby is pass-by-reference
을 고려? 나는 이것을 정확하게 해석하고 있는가? 내 시도에서 어떤 실수를 지적 자유롭게, 나는 단서가 오른쪽 트랙에 메신저 있다면.
감사합니다.
편집
더 매직
def my_foo(a_hash)
a_hash["test"]="reference"
end;
hash = {"test"=>"value"}
my_foo(hash)
puts "Ruby is pass-by-#{hash["test"]}"
그런데 또 다른 마법 예를 추가 .. 내 뇌 이데트 get -__- – bill
또 다른 마법의 예를 추가했습니다 – bill
'foo'를 호출했을 때'bar'가'baz'의 복사본에 초기화되지 않았습니다. 이 첫 번째 순간에 같은 대상을 나타냅니다. –