이렇게하면 단점 (원숭이 패치가있는 것 외에는)이 보이십니까?+ 연산자를 사용하여 병합 해시
class Hash
def +(other)
self.merge(other)
end
end
이 방법은 매우 편리하지만 문제가 될 수 있습니다.
이렇게하면 단점 (원숭이 패치가있는 것 외에는)이 보이십니까?+ 연산자를 사용하여 병합 해시
class Hash
def +(other)
self.merge(other)
end
end
이 방법은 매우 편리하지만 문제가 될 수 있습니다.
큰 단점은 없습니다. 아주 사소한 단점은 호출 스택에 추가 레벨을 추가하여 호출 속도가 약간 느려지는 것입니다.
class Hash
alias :+ :merge
end
이점은 당신이 +=
구문 설탕을 사용할 수있을 것입니다 수 있습니다,하지만 당신은 +=
대신 merge!
사용할 어디 유스 케이스 생각할 수 없다 :이 문제를 방지하려면 별칭을 사용할 수 있습니다. 이들의 차이점은 객체 ID가 변경되는지 여부입니다.
감사합니다. 구현을 변경하여 별칭을 사용했습니다. – Mauricio
새로운 표준 방법으로 표준 루비 라이브러리에 패치를 적용하면 루비 코어에 문제가 발생하지 않을 것입니다. 좋습니다. 반면에 타사 라이브러리에 의존하는 경우 9001 번째 오프 사이트 gem/lib를 추가하는 중에 가끔씩 멈추는 경우가 있습니다. 이 경우 왜 _3rd-party-n-graph-parser_가 제대로 작동하지 않는지 이해할 수 없을 것입니다. 내가 상상할 수있는 유일한 경우는 외국 lib가'respond_to '를 사용할 것인가? : 거대한'case' 절 대신에 거대한 클래스의 인스턴스를 구별하기 위해 +'. – mudasobwa