2009-11-10 5 views
0

'each'호출을 Hash 고유 메소드로 전달하는 가장 효율적인 방법인가?Ruby에서 각 메소드를 프록 싱

외부에 @index를 표시해야합니까?

나는 블록이 invovled로서 조금 확신 해요.

class TimeSlice 
    def initialize(list) 
    # @index is a hash 
    @index = list.do_some_magic() 
    end 

    def each(&block) 
    @index.each(&block) 
    end 
end 
+0

감사합니다. – reto

답변

2

@index은 비공개이어야합니다. 클래스 범위 외부에 노출시킬 필요가 없습니다. each 메서드를 위임하기 만하면 예제가 완벽하게 적용됩니다.

대리인 디자인 패턴을 구현하는 것이 더 복잡한 경우를 고려해 볼 수 있습니다. 루비는 Delegate module과 함께 제공됩니다.

1

효율성 측면에서 나는 잘못된 점이 있다고 생각하지 않습니다. 그러나 @index을 비공개로 유지해야합니다. 그렇지 않으면 래퍼 each 메서드의 전체 지점이 손실됩니다.

관련 문제