자바에 대한보다 역동적 인 대안을 찾고 있기 때문에 Ruby를 살펴보기 시작했습니다. 나는 당신이이 같은 예를 들어,의 정의 후 루비의 클래스를 수정하는 방법을 좋아한다 :Ruby mixins를 클래스 패치로 사용하는 방법
이class A
def print
"A"
end
end
class B < A
def print
super + "B"
end
end
class A
alias_method :print_orig, :print
def print
print_orig + "+"
end
end
puts B.new.print # A+B
이 지금은 유지 mixin과 동일한 작업을 수행하려고 :
이class A
def print
"A"
end
end
class B < A
def print
super + "B"
end
end
module Plus
alias_method :print_orig, :print
def print
print_orig + "+"
end
end
A.extend(Plus) # variant 1
B.extend(Plus) # variant 2
class A # variant 3
include Plus
end
class B # variant 4
include Plus
end
puts B.new.print
그러나 변종 중 어느 것도 생산하지 예상 된 결과. BTW, 예상되는 결과는 다음과 같습니다. 믹스를 사용하여 클래스 A를 '패치'하여 해당 동작을 수정할 수 있기를 원합니다. 믹스 인을 쓰고 싶습니다. 같은 행동으로 여러 클래스를 '패치'하고 싶습니다.
내가 원하는 것을 할 수 있습니까? 그렇다면 어떻게?
좋은 예, +1. – Ernest