LoginSignup
0
1

More than 5 years have passed since last update.

Rubyで単純なQueueクラスを使いたい

Last updated at Posted at 2017-10-09

グラフアルゴリズムを使ったプログラムを書く時、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についても同様な実装ができそうだ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1