, 강제 변환의 많은() 도움을 추가 처리하는 방법을 알고하지 않습니다Ruby에서 coerce() 메소드는 도움이 필요한 연산자가 무엇인지 알 수 있습니까? 루비에서
3 + rational
이 필요하다입니다
def coerce(something)
[self, something]
end
, Fixnum이라는 3
하여 수행 할 수 있습니다 보인다 이 Rational, 그것은 rational.coerce (3)를 호출하여 도움이 용 Rational #의 강제 변환을 요청하고이 강제 변환 인스턴스 방법은 호출자에게 않도록 :
# I know how to handle rational + something, so I will return you the following:
[self, something]
# so that now you can invoke + on me, and I will deal with Fixnum to get an answer
그래서 대부분의 OPE 경우를 rators는이 방법을 사용할 수 있지만 (a - b)! = (b - a) 상황이 아닌 경우? coerce()가 어떤 연산자인지 알고, 그 특별한 경우를 처리 할 수 있으며, (a op b) == (b op a) 인 다른 모든 경우를 처리하기 위해 단순한 [self, something]을 사용하고 있을까요? (op는 연산자입니다).
왜 coerce''에 _three_ 질문 첫 번째 답변에? –
이전 게시물에서 많은 통찰력을 얻었습니다. 이번엔 새로운 클래스가 피연산자를 바꿔서 새로운 클래스를 처리 할 수 있는지, 연산자가 그렇게하는 것이 옳은지 살펴보고, 스와핑이 올바르지 않은 경우에만 처리 할 수 있는지 확인하고 싶습니다. –