>> a = 5
=> 5
>> b = "hello, world!"
=> "hello, world!"
>> b.dup
=> "hello, world!"
>> a.dup
TypeError: can't dup Fixnum
from (irb):4:in `dup'
from (irb):4
새로운 변수에 정수를 할당 할 때마다 Ruby가 사본을 만들지 만 왜 Numeric#dup
오류가 발생합니까?숫자가 .dup를 지원하지 않는 이유는 무엇입니까?
모든 개체가 .dup
에 올바르게 응답해야하므로이 추상화를 중단하지 않겠습니까?
지금까지 내가 말할 수있는 dup
방법으로 문제가 해결됩니다 다시 쓰기 :
>> class Numeric
>> def dup()
>> self
>> end
>> end
이 내가 보이지 않아요 단점이 있습니까? 왜 이것이 Ruby에 내장되어 있지 않습니까?
Rails가 아닌 ActiveSupport는 'duplicable?'메소드를 제공합니다.따라서 ActiveSupport를 설치하고 (그리고 다른 많은) 유틸리티 메소드를 원하면 ActiveSupport ('require'active_support'') 만 필요할 수 있습니다. – henrikhodne
사실. 업데이트 됨. –
링크는 https://bugs.ruby-lang.org/issues/1844로 대체해야합니다. 또한 진전이 없었기 때문에이 기능은 거부되었습니다. –