グラフアルゴリズムを使ったプログラムを書く時、Queueという名前と機能を使ったソースを書きたい
しかし、それには2つ問題がある
- 一般的なQueueのプログラムでの挙動は Arrayの #push #shift で実装されているので、Queueクラスは作る必要がない
- Queueというクラス名はスレッドプログラミング用のThread::Queueというクラスに使われている
というわけで、単純にaliasを使うことにする。
# enqueue = 後入れ、 dequeue = 先出し
class Array
alias_method :enqueue, :push
alias_method :dequeue, :shift
end
queue = [1,2,3]
puts "original !"
puts queue.to_s
puts "enqueue! 4"
# queue.push(4)
queue.enqueue(4)
puts queue.to_s
puts "dequeue! 1"
# queue.shift
queue.dequeue
puts queue.to_s
出力
ruby test.rb
original !
[1, 2, 3]
enqueue! 4
[1, 2, 3, 4]
dequeue! 1
[2, 3, 4]
Stackについても同様な実装ができそうだ