module StateMachine
class State
def initialize(name)
@name = name
end
...
end
RESET_STATE = State.new('reset') #module const
def reset
@current_state = RESET_STATE
end
def transition(nextState)
...
end
end
class MyStateMachine
include StateMachine
def initialize
reset
end
end
class Array #add a rotate! method to built-in Array
def rotate!
self.unshift( self.pop)
return self[0]
end
end
a = [1,2,3,4,5]
a.rotate! #a -> [5,1,2,3,4]
a = [1,2,3,4,5] def a.rotate! self.unshift( self.pop) return self[0] end a.rotate! #a -> [5,1,2,3,4]