From: mouse_059 Date: 2007-10-23T12:00:27+09:00 Subject: another (simple!) eval question! greetings Rubyists, Still trying to wrap my head around metaprogramming. def analyze(args) # stuff # total is defined up here and is equal to some amount of seconds elapsed (say 100,000) day, hour, min = 0, 0, 0 loop do day += 1; total -= 86400; break if total < 0; end; day -= 1; total += 86400 loop do hour += 1; total -= 3600; break if total < 0; end; hour -= 1; total += 3600 loop do min += 1; total -= 60; break if total < 0; end; min -= 1; total += 60 puts "your total is #{day} days, #{hour} hours, #{min} mins, #{total} secs" end as you can see, i'd like to refactor that so i just have to dotime( :day, 86400 ) dotime( :hour, 3600 ) dotime( :min, 60 ) (i can hardcode 'total' in the function, doesn't matter?) But no eval I use works, either the eval isn't defined for my class (assume main:Object) or I get "no method for + (nilpointer). I read about how you shouldn't use string eval, etc. A simple pointer to some help would be awesome! Thanks guys. PS, if a time function does this, don't spoil the metaprogramming for me? I'd like to learn anyway. :) -Mike