ProgramingTip

루비 : 같은 객체를 가리 키지 않고 어떻게 변수를 복사 할 수 있습니까?

bestdevel 2020. 12. 4. 19:49
반응형

루비 : 같은 객체를 가리 키지 않고 어떻게 변수를 복사 할 수 있습니까?


Ruby에서 원본에 대한 변경 사항이 복사본에 영향을주지 않도록 변수를 비용 부담해야합니까?

예를 들면 :

phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"

이 예에서 두 변수는 동일하게 표현을 가리 킵니다. 두 번째 변수에 대한 개체를 만들고 싶지만 처음에는 동일한 정보를 포함하고 싶습니다.


복사에 사용하는 다음을 수행 할 수 있습니다.

phrase2 = phrase1.dup

또는

# Clone: copies singleton methods as well
phrase2 = phrase1.clone

복사를 전혀 방지하기 위해 이렇게 할 수도 있습니다.

phrase2 = phrase1.gsub("Hello","Hi")

대신 귀하의 예를 사용하십시오.

phrase2 = phrase1

시험 :

phrase2 = phrase1.dup

phrase1 = "Hello Jim"
   # => "Hello Jim"

phrase2 = Marshal.load(Marshal.dump(phrase1))
   # => "Hello Jim"

phrase1.gsub!("Hello","Hi")
   #  => "Hi Jim" 

puts phrase2
   # "Hello Jim"

puts phrase1
   # "Hi Jim"

참고 URL : https://stackoverflow.com/questions/1465569/ruby-how-can-i-copy-a-variable-without-pointing-to-the-same-object

반응형