루비는 오리타입을 지향한다.
오리타입이라 함은 ‘오리처럼 행동하면, 오리로 봐라’ 를 행동강령으로 가지는 타입을 의미한다.
오리타입의 대표적인 예가 Array이다.
루비에는 Queue나 Stack이 없다. 대신, Array로 Queue와 Stack의 역할을 할 수 있다. Array가 Queue처럼 굴면, Queue로 보고 Stack 처럼 굴면 Stack으로 보라는게 루비의 철학이다.
나 같은 경우는 제일 익숙한 언어인 C++을 기준으로 저 Array의 오리타입을 오리로 바꾸어 사용한다.
module Pok
class Stack < Array
def push_back( _element )
push(_element)
end
def pop_back
pop
end
end
class Queue < Array
def push_back( _element )
push(_element)
end
def pop_front
shift
end
end
end