#!/usr/bin/env ruby def generate( base, interval ) $base = base $interval = interval end # create incrementor configurator def incrementor $base += $interval end # create incrementor generate( 5, 2 ) # configure first incrementor puts incrementor # output: 7 puts incrementor # output: 9 first_base, first_interval = $base, $interval # save first incrementor's state generate( 3, 1 ) # configure second incrementor puts incrementor # output: 4 puts incrementor # output: 5 second_base, second_interval = $base, $interval # save second incrementor's state generate( first_base, first_interval ) # reload first incrementor's state puts incrementor # output: 11 puts incrementor # output: 13 first_base, first_interval = $base, $interval # save first incrementor's state generate( second_base, second_interval ) # reload second incrementor's state puts incrementor # output: 6 puts incrementor # output: 7 =begin All Output: 7 9 4 5 11 13 6 7 =end